Bootstrap

C++系统教程009-复合赋值运算符

复合赋值运算符

复合赋值运算符都是双目运算符,相当于一个简单赋值运算符和其他运算符的组合。C++中提供了很多复合赋值运算符。
​​​​​​在这里插入图片描述
复合赋值运算不但书写形式简洁、紧凑,运算也非常高效,编译器在生成目标代码时能够直接进行优化。
复合赋值运算符可将中间的运算结果返回,作为表达式的值。
例如,下述代码中,a*=5等价于a=a5,a5的运算结果30作为临时变量赋给了变量a。

int a=6;
	a*=5;

sizeof运算符

sizeof运算符用于计算指定数据类型或表达式结果在内存中占用的字节数,有以下两种语法形式:

  1. sizeof(类型说明符)
  2. sizeof(表达式)
    sizeof运算符是一个看起来非常像函数的运算符,下面来看几个示例。
	sizeof(char)	//返回1,说明char类型占用1个字节
	sizeof(void*)	//返回4,说明空指针占用4个字节
	sizeof(66)	//返回4,说明整数66占用4个字节 

注意:由于CPU寄存器的位数不同,不同计算机上同种数据类型占用的内存字节数目可能不同

运算符的优先级和结合性

  1. 运算符的优先级决定了表达式中各项运算执行的先后顺序。
  2. 高优先级的运算符要先于低优先级的运算符进行运算。例如,表达式a+bc中,先计算bc,得到结果再与a相加,这说明“*”运算符的优先级高于“+”运算符。
  3. 当表达式中出现括号时,会改变运算的先后顺序,如表达式(a+b)*c中,先计算括号中的表达式,再计算括号外的表达式,这说明“( )”运算符的优先级是最高的。

运算符的结合方式有两种:

  1. 自左向右结合(→)
  2. 自右向左结合(←)。
  3. 自左向右结合表示运算符优先与其左边的表达式结合,如加法、减法、乘法、除法运算等;
  4. 自右向左结合表示运算符优先与其右边的表达式结合,如自增、自减、复合赋值运算等。 同一优先级的运算符,运算顺序由结合方向决定
  5. 例如,表达式12/3中,​“”和“/”的优先级别相同,其结合方向自左向右,因此该表达式等价于(1*2)/3。
    C++中,各运算符的优先级和结合性如下图
    在这里插入图片描述
;