C++中的算术运算符包括“+”、“-”、“*”、“/”和“%”等运算符。算术运算符都能作用于任意算数类型。对于bool类型来说,在使用算术运算符时需要格外注意。
1 整型与bool类型的二元算术运算
对于不同类型的数进行算术运算时,小类型的数会被提升成较大类型的数,所有运算对象最终会转换成同一类型。
int i = 1 + true;
此时,true会被提升为整型1,此时i的值是2。
2 bool类型与一元算术运算符
除了之前提到的二元算术运算符之外,还有“+”和“-”两个一元算术运算符,分别表示正号和负号。
bool b1 = true;
int i = 1 + (-b1);
此时(-b1)的值会被提升为整型-1,因此i的值是0。
bool b2 = -b1;
按照之前的分析,(-b1)的值会被提升为整型-1,而使用-1对bool类型的对象b2进行初始化,因为-1不等于0,所以,此时b2的值true。