操作符
算术操作符
“+ - * / %”太简单了,不解释。
移位操作符
“<<或>>”左移或右移位操作符,也不想解释,就是任性。
位操作符
“AND OR XOR”与&,或|,异或^,也不讲。
单目操作符
“! ++ - & sizeof ~ – + *” 非,自增,减,与,判断操作数类型长度,求补,自减,加,乘。
关系操作符
“> < == != >= <= ”看一眼就知道了。
逻辑操作符
“&& ||”和位操作符不同的是它是对表达式的判断,对值不做改变。
条件操作符
“ expression1 ? expression2 :expression3 ” 若expression1 为真,则表达式为expression2否则为expression3;完美。
布尔值
在c中并不具备显式布尔类型所以
不能直接在.c文件中直接使用bool关键字,它都不认识,所以要用整数代替。
其规则是:零是假,任何非零值皆是真。
左值和右值
为了理解有些操作符存在的限制,必须借助左值和右值之间的区别。这两个术语是多年前由编译器设计者所创造并沿用至今,尽管它们的定义并不与c语言严格吻合。
表达式求值
隐式类型转换
c的整形算数运算总是以缺省整型类型的精度来进行的。为了获得这个精度,表达式中的字符型和短整型操作数在使用之前被转换为普通整型,这个转换称为隐式整形转换。
操作符的优先级
注意
1.有符号值的右移位操作是不可以移植的。
2.移位操作的位数是个负值。
3.连续赋值中各个变量的长度不一。
4.误用=而不是==进行比较。
5.误用|代替||,误用&代替&&。
6.在不同的用于表示布尔值的非零值之间进行比较。
7.表达式赋值的位置并不决定表达式计算的精度。
8.编写结果依赖于求值顺序的表达式。
编程提示总结
1.使用复合赋值符可以使程序更易维护。
2.使用条件操作符代替if语句以简化表达式。
3.使用逗号操作符来消除多余的代码。
4.不要混用整型和布尔型。