读书笔记:C++ Primer系列(11)—— 表达式
定义: 表达式(expression)是由一个或多个操作数(operand)通过操作符(operator)组合而成。
1. 操作符——除法(/)和求模(%)
注意:
- 除法和求模两种运算,操作数都必须是整型,包括:bool、char、short、int和long类型,以及对应的unsigned类型
- 如果两个操作数为正,除法和求模操作的结果也是正数或为零;
- 如果两个操作数为负,除法操作的结果为正数或为零,而求模的结果为负数或为零;
- 如果两个操作数,一个为正一个为负,除法和求模的结果取决于机器;如果求模的结果随分子的符号,则向零一侧取整,如果求模的结果随分母的符号,则向负无穷一侧取整。
举例说明:
21/6; //ok,result is 3
21 / 7; //ok,result is 3
-21 / -8; //ok,result is 2
21 / -5; //machine-dependent: result is -4 or -5
21%6; //ok,result is 3
21%7;//ok,result is 0
-21 % -8; //ok,result is -5
21 % -5; //machine-dependent: result is 1 or -4
2. 位操作符
如:unsigned char b1=01100101
unsigned char b2=10101111
求反(~):b3=~b1; //ok,result is 10011010
左移(<<):b4=b1<<2; //ok, result is 10010100
右移(>>):b5=b1>>3; //ok,result is 00001100
位与(&):b6=b1 & b2; //ok,result is 00100101(对应位都为1时,位与结果为1,其余都为0)
位或(|):b7=b1 | b2; //ok,result is 11101111(对应位有一个为1,位或结果就为1,其余都为0)
位异或(^):b8=b1 ^ b2; //ok, result is 11001010(对应位有且仅有一个为1,位异或结果就为1,其余都为0)
3. sizeof操作符
sizeof操作符的作用是返回对象或类型名的长度,返回值的类型为size_t,长度的单位是字节。
注意:
- 对char类型或值为char类型的表达式做sizeof操作,结果为1;
- 对引用类型做sizeof操作将返回存放此引用类型对象所需的内存空间大小;
- 对指针做sizeof操作将返回存放指针所需的内存大小,如果要获取该指针所指向的对象的大小,必须对该指针进行解引用;
- 对数组做sizeof操作等效于将对其元素类型做sizeof操作的结果乘以数组元素的个数。这里由于sizeof返回整个数组在内存中的存储长度,因此可以用sizeof数组的结果除以sizeof其元素类型的结果来表示数组元素的个数。