运算符与表达式(基础知识回顾)

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,舍弃小数部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值