第五章 操作符和表达式

1.移位:<<  , >>逻辑移位:左边移入的位用0填充。算术移位:左边移入的位由原先该值的符号决定,符号位为1,则1填充,符号位为0,则0填充。

无符号值执行的都是逻辑移位,有符号值看编译器。(有符号值右移位不可移植(符号))

 

2.位操作符&(按位与)   都为1才1,其余为0

                 |(按位或)    都为0才0,其余为1

                 ^(按位异或)   相同为0   不同为1

 

3.赋值操作符的结合性:右到左。

 

4.逗号表达式将两个或多个表达式分隔开来,这些表达式自左向右逐个求值,整个逗号表达式的值就是最后那个表达式的值。

运用:if(b+1,c/2,d>0)                 a=gg();  cou(a);   while(a>0){...a=get();  cou(a);}可以写成while(a=get(),cou(a),a>0){...}

while(x<5)b+=x,x++;注意两个表示之间的符号为逗号,这样不用加{ }

 

5.b+25=a,b+25也会保存,但我们无法预测保存在哪。

 

6.当整型值转化为float型是,也有可能发生损失精度。float型值仅要求6位数字的精度(个人测试:要看操作系统几位,64位是8位)

 

7.复杂表达式的求值顺序:操作符优先级   ,  操作符结合性    ,  操作符是否控制执行的顺序。

 

8.c并不具备显式的布尔类型,布尔值是用整形表达式来表示的。

 

posted @ 2018-01-26 01:00  Hk_Mayfly  阅读(129)  评论(0)    收藏  举报