C++运算符菜鸟教程

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C++内置了丰富的运算符,并提供了以下类型的运算符:

本章将逐一介绍算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和其他运算符。

下表显示了C++支持的算术运算符。

假设变量A的值为10,变量B的值为20,则:

请看下面的实例,了解C++中可用的算术运算符。

复制并粘贴下面的C++程序到test.cpp文件中,编译并运行程序。

当上面的代码被编译和执行时,它会产生以下结果:

Line1-c的值是31Line2-c的值是11Line3-c的值是210Line4-c的值是2Line5-c的值是1Line6-c的值是10Line7-c的值是10关系运算符下表显示了C++支持的关系运算符。

请看下面的实例,了解C++中可用的关系运算符。

复制并黏贴下面的C++程序到test.cpp文件中,编译并运行程序。

Line1-a不等于bLine2-a不小于bLine3-a大于bLine4-a小于或等于bLine5-b大于或等于a逻辑运算符下表显示了C++支持的关系逻辑运算符。

假设变量A的值为1,变量B的值为0,则:

请看下面的实例,了解C++中可用的逻辑运算符。

Line1-条件为真Line2-条件为真Line4-条件不为真Line5-条件为真位运算符位运算符作用于位,并逐位执行操作。&、|和^的真值表如下所示:

假设如果A=60,且B=13,现在以二进制格式表示,它们如下所示:

A=00111100

B=00001101

-----------------

A&B=00001100

A|B=00111101

A^B=00110001

~A=11000011

下表显示了C++支持的位运算符。假设变量A的值为60,变量B的值为13,则:

请看下面的实例,了解C++中可用的位运算符。

Line1-c的值是12Line2-c的值是61Line3-c的值是49Line4-c的值是-61Line5-c的值是240Line6-c的值是15赋值运算符下表列出了C++支持的赋值运算符:

请看下面的实例,了解C++中可用的赋值运算符。

Line1-=运算符实例,c的值=21Line2-+=运算符实例,c的值=42Line3--=运算符实例,c的值=21Line4-*=运算符实例,c的值=441Line5-/=运算符实例,c的值=21Line6-%=运算符实例,c的值=11Line7-<<=运算符实例,c的值=44Line8->>=运算符实例,c的值=11Line9-&=运算符实例,c的值=2Line10-^=运算符实例,c的值=0Line11-|=运算符实例,c的值=2杂项运算符下表列出了C++支持的其他一些重要的运算符。

运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。

例如x=7+3*2,在这里,x被赋值为13,而不是20,因为运算符*具有比+更高的优先级,所以首先计算乘法3*2,然后再加上7。

下表将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。在表达式中,较高优先级的运算符会优先被计算。

请看下面的实例,了解C++中运算符的优先级。

对比有括号和没有括号时的区别,这将产生不同的结果。因为()、/、*和+有不同的优先级,高优先级的操作符将优先计算。

zsz***@qq.com

&:只有2个都为1,那么结果是1,否则为0;例如:1&1=1,1&0=0,0&0=0,0&1=0;

11&3=3

00001011&00000011=00000011=3|:只要有一个是1,那么结果为1,否则为0;例如:1&1=1,1&0=1,0&0=0,0&1=1;

11|3=11

00001011|00000011=00001011=11>>:向右位移,就是把尾数去掉位数,例如:153>>2,153的二进制是:10011001,屁股后面去掉2位100110,100110转化成十进制就是38,153=10011001,38=100110,"01"去掉了。

<<:向左位移,就是把开头两位数去掉,尾数加位数00,例如:

107=01101011<<2<<172=10101100在计算机中由于是32位的

107=00000000000000000000000001101011<<2<<428=00000000000000000000000110101100^:两个相同的数会变成0,反之是1,例如:1&1=0,1&0=1,0&0=0,0&1=1;

11^3=8

ccf

130***0664@qq.com

逻辑与&&

&&会先判断左边的值是否为真。

如果为假,那么整个表达式毫无疑问也为假。

如果为真,那就还需要判断右值,才能知道整个式子的值。

这个时候判断右值的过程就起了一个if的作用,可以利用这个过程判断右边表达式是否为真。

下面代码:

/*不用任何循环语句,不用if,来实现1+2+3+...+10的值*/#includeusingnamespacestd;intadd(intc){inta=0;c&&(a=add(c-1));//递归循环,直到传入c的值为0则结束循环cout<

其实与上面的逻辑与&&大同小异。

都是先判断左边是否为真,再来考虑右边。

因为逻辑与||只需要左边为真,那么整个表达式就有值,就不会再去算右边的值了。

所以我们加个!让c值为假时,!c才为真,这样的话逻辑与||还需要判断右边的表达式才能计算出整个表达式的值。

(!c)||(a=add(c-1));这样就达到了和用逻辑与&&时一样的目的。

代码:

lhshengshi

510***747@qq.com

除法/和求模%若两个操作数是正数,则除法的结果是正数,求模的结果也是正数若两个操作数是负数,则除法的结果是正数,求模的结果是负数若只有一个操作数是负数,则除法和求模的结果取决于机器,除法可以确定结果是负数逻辑与和逻辑或操作符总是先计算其左操作数,然后再计算其右操作数,只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解其右操作数区分if(i

intval=2;if(val==true){//不会进入ifcout<<"val==true"<

intival;int*pval;ival=pval=0;//error尽管ival和pval都可以赋值为0strings1,s2;s1=s2="OK"//ok如果指针指向不是用new分配的内存地址,则在该指针上使用delete是不合法的。

通常编译器不能断定一个指针是否指向动态对象,因此尽管这样做是错误的,但在大部分编译器上仍能运行通过,但是会产生运行时错误。整形提升

对于所有比int小的整形(char,signedchar,unsignedchar,short,unsignedshort),如过该类型所有可能值都包含在int中,他们会被提升为int型,否则,他们将被提升为unsignedint。

对于包含signed和unsignedint型的表达式,表达式中的signed型整数会被转换为unsigned型。

tianqixin

429***967@qq.com

C++中的-->操作符

以下代码中我们设置了一个x自减的条件运算符代码,在x的进行自减运算前,会先使用比较符号>与右边表达式0进行比较,然后返回结果再进行自减运算:

while(x-->0)//相等于以下代码while((x--)>0)//把两个运算符分开更好理解了while(x-->0)实例1:输出0到9的整数

#includeintmain(){intx=10;while(x-->0){printf("%d",x);}}输出结果:

9876543210实例2:输出大于0小于10的偶数

#includeintmain(){intx=10;while(0<----x){printf("%d",x);}}输出结果:

8642实例3

#includeintmain(){intx=100;while(0<--------------------x){printf("%d",x);}}输出结果:

cool

coo***j@126.com

任何数异或^0得到的值不变:

a^0=a任何数异或同一个数两次得到的值不变:

zhushengjie

zsj***3@163.com

在工作中遇到了一个int的陷阱:当除数和被除数都是整型数据时,得到的结果也是整型数据,它将小数部分舍去,相当于求模运算。

实例1:余数小于0.5时:

intN=819;std::cout<

6868.25实例2:余数大于0.5时:

intN=819;std::cout<

THE END
1.MicrosoftC/C++文档MicrosoftLearn了解如何使用 C++ 针对平台和设备开发应用程序、服务和工具。https://docs.microsoft.com/zh-cn/cpp/
2.C++语言的起源。哪些程序是C++编写的?为什么早期VC++对ANSIC89之后的...C++的++来源于C语言的递增运算符,代表增加,意义为扩展。Bjarne Stroustrup博士在做博士论文写代码的时候,遇到一些困难,发现Simula和BCPL等语言因为本身时代局限都满足不了它的需求,利用C语言快速可移植强,加上一些带类的特性,通过C Front编译成C代码可以很好满足他的需求。后面不断发展,变成了C++....https://blog.csdn.net/cxsjabcabc/article/details/143480537
3.C++SyntaxHeader files add functionality to C++ programs.Line 2: using namespace std means that we can use names for objects and variables from the standard library.Don't worry if you don't understand how #include <iostream> and using namespace std works. Just think of it as something that (almost...https://www.w3schools.com/cpp/cpp_syntax.asp
4.C++ProgrammingLanguageC++ is the most used and most popular programming language developed by Bjarne Stroustrup. C++ is a high-level and object-oriented programming language. This language allows developers to write clean and efficient code for large applications and software development, game development, and operating ...https://www.geeksforgeeks.org/c-plus-plus/
5.C++参考手册功能特性测试宏 (C++20) 语言功能特性 ? 标准库功能特性 语言支持库 程序工具 信号 ? 非局部跳转 基本内存管理 变参数函数 source_location (C++20) 协程支持 (C++20) 比较工具 (C++20) 类型支持 ? type_info numeric_limits ? exception initializer_list (C++11)概念库 (C++20) 诊断...https://zh.cppreference.com/w/cpp
6.thec++resourcesnetworkC++ Language: Learn this versatile and powerful programming language. Includes detailed explanations ofpointers,functions,classesandtemplates, among others... Reference Description of the most important classes, functions and objects of the Standard Language Library, with descriptive fully-functional short pr...https://www.cplusplus.com/
7.C++在C++的第二阶段,引入了标准模板库(STL),STL是一个通用的、可复用的程序库,它包含了许多容器(如向量、列表、映射等)和算法(如排序、查找等),以及迭代器等组件,使得C++程序员能够更加方便地编写高效、可维护的代码。STL引入了泛型程序设计的概念,使得代码可以更加通用和灵活。另一个重要的事件是Boost程序库的出现...https://glopedia.cn/660/
8.厦门人才网5、C++工程师11-13 6、系统工程师(底层协议)11-13 7、系统工程师(应用开发)11-13 8、硬件工程师11-13 营销中心 9、省区销售经理11-13 10、区域销售经理11-13 11、销售工程师11-13 12、售后工程师11-13 13、销售/营销/业务员11-13 14、技术支持工程师11-13 ...https://www.xmrc.com.cn/net/info/showco.aspx?ID=2911053
9.游戏常用运行库安装包游戏工具游侠补丁Visual c++ 运行库 错误提示: 各种未知错误如“配置不正确”或其他错误;没有找到 Msvcp100.DLL visual c++ 2005运行库 下载 大小:5.58MB visual c++ 2008运行库 下载 大小:8.56MB visual c++ 2010运行库 下载 大小:10.15MB Visual C++ 2005 JP 日版游戏运行库 ...https://www.ali213.net/zhuanti/yxk/