1.算术运算符
+,-, * , /(结果是整数,小数会自动舍弃),%(操作数必须是整数)。
自增++,自减--,需要注意顺序。
i=1,cout<<i++ ,先输出i的值1,然后i再自增1,变为2,
而cout<<++i,先使i先自增1变为2,然后再输出i的值2。
2.赋值运算符
=,+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|= ,优先级与=一致,如x*=y+3,x=x*y+3。
3.逗号运算符
,
4.逻辑运算符
C++中提供了用于比较的关系运算符和用于逻辑分析的逻辑运算符。
关系运算符包括<、<=、>、>=、==、!=。前四个的优先级相同,后两个的优先级相同,而且前四个比后两个的优先级高。
逻辑运算符包括!、&&、||,优先级依次降低。
关系运算符与逻辑运算符结果都是BOOL型(true/false)。
5.条件运算符
?,三元运算符。表达式?值1:值2。表达式为true,则结果为值1,否则为值2
6.sizeof
sizeof运算符用来计算某个对象在内存中占用的字节数。此运算符的使用形式为:sizeof(类型名)或sizeof(表达式)。
7. 位运算
&,按位与,对两个操作数的二进制形式的每一位分别进行逻辑与操作。3的二进制形式为00000011,5的二进制形式为00000101,按位与后结果是00000001。
|,按位或,对两个操作数的二进制形式的每一位分别进行逻辑或操作。比如3和5按位或运算后结果是00000111。
^,按位异或,对两个操作数的每一位进行异或,也就是如果对应位相同则运算结果为0,若对应位不同则计算结果为1。3和5按位异或后结果为00000110。
~,按位取反,一元运算符。对一个二进制数的每一位求反。比如,3按位取反就是11111100。
移位。包括左移运算(<<)和右移运算(>>),都是二元运算符。移位运算符左边的数是需要移位的数值,右边的数是移动的位数。左移是按指定的位数将一个数的二进制值向左移位,左移后,低位补0,移出的高位舍弃。右移是按照指定的位数将一个数的二进制值向右移位,右移后,移出的低位舍弃,如果是无符号数则高位补0,如果是有符号数,则高位补符号位或0,一般补符号位。比如,char型变量的值是-8,则它在内存中的二进制补码值是11111000,所以a>>2则需要将最右边两个0移出,最左边补两个1,因为符号位是1,则结果为11111110,对其再求补码就得到最终结果-2。
8.类型转换
在算术运算和关系运算中如果参与运算的操作数类型不一样,则系统会对其进行类型转换,这是隐含转换,转换的原则就是将低类型的数据转换为高类型数据。各类型从低到高依次为char,short,int,unsigned int,long,unsigned long,float,double。类型越高范围越大,精度也越高。隐含转换是安全的,因为没有精度损失。
强制类型转换是由类型说明符和括号来实现的,使用形式为:类型说明符(表达式) 或 (类型说明符)表达式。它是将表达式的结果类型强制转换为类型说明符指定的类型。比如,float fVal=1.2; int iVal = (int)fVal;计算后面表达式的值时会将1.2强制转换成1,舍弃小数部分。