首页 > 代码库 > 读书笔记:C++ Primer系列(11)—— 表达式

读书笔记: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其元素类型的结果来表示数组元素的个数。