操作符
1.1 算术操作符
加(+),减(-),乘(*),除(/),求模(%)
除了 % 操作符,其他的都是既适用于浮点类型又适用于整数类型。% 运算符要求左右两边操作数均是int类型,运算结果也是int类型 。
若除号 / 左右的操作数均是int类型,结果也是int类型,值为商的整数部分。在其他情况下则是浮点数除法。
eg:
int a = 5, b = 3;
a / b 结果是1 。
1.2移位操作符
左移操作符 (<<),右移操作符(>>),两个操作数都是整型。
左移操作中,值最左边的几位被丢弃,右边多出来的几位则填0补齐。
右移操作中,分为2种情况:
1. 逻辑移位:右移后左边的位填0补齐。
2.算术移位:如果操作数为负数,则右移后填1补齐。正数填0补齐。
eg:
10010110
逻辑移位:00100101
算术移位:11100101
一个程序如果使用了有符号数的右移操作,它就是不可移植。
1.3位操作符
按位与(&), 按位或(|), 异或(^)
位操作对它们的操作数的各个位执行 and,or和 xor(异或)等逻辑操作。
&:两个位都为1,结果才是1,否则都是0
|: 两个位都是0,结果才是0,否则都是1
^: 两个位不同为1,相同为0
它们要求操作数为整型。
1.4单目操作符
!, ~ ,++,--,+,-,&,* ,sizeof
这些单目操作符,只能接受一个操作数。
!对它的操作数进行取反操作。如果操作数为真,其结果为假。这个操作符产生的结果为整型,0或1。
~ 对它的操作数进行求补操作。操作数中所有原先是1的位变成0.
- 操作符产生操作数的负值。
& 操作符产生它的操作数的地址。
* 操作符是间接访问操作符,它与指针以前使用,用于访问指针所指向的值。
sizeof 操作符判断它的操作数的类型长度,以字节为单位表示。sizeof (int) sizeof (x)。
b = ++a, b = a++。在操作数之前的 ++在变量使用前自增,在操作数后的++在变量使用后再自增。
1.5关系操作符
> , >=, <, <=, !=, ==
这些操作符的工作方式:表达式的结果如果是0,则是假,非0则为真。
if ( expression!=0) ....
if( expression) .....
测试不等于0,可以用关系操作符,又可以通过测试表示式的值来完成。
1.6逻辑操作符
&& , ||
作用:用于对表达式求值,测试它们的值得真假。
&& 和 || 操作符具有 短路求值,如果表达式的值根据左操作数就可决定,它就不再对右操作数进行求值。与之相反,& 和 | 操作符两边的操作数都需要进行求值。
逻辑操作符用于测试零值和非零值,位操作符用于比较它们的操作数中对应的位。
1.7条件操作符
条件操作符接受三个操作数,它也会控制子表达式的求值顺序。
expression1 ? expression2 :expression3;
1.8布尔值
c不具备显示的布尔值类型,所有使用整数来代替。其规则是:
零是假,任何非零值为真。