Chapter 4,Section4.2——Arithmetic Operators
算术运算符
运算符:一元:+加 -减 用途:+ expr、- expr
*乘 /除 %求余 用途:expr *(/)(%) expr
二元: +加 -减 用途:expr +(-) expr
同级优先左结合,优先级从上到下递减。高优先级的运算符比低优先级的运算符组合的更紧密。
除非特别说明,否则任意算术类型或者任意能够转换为算术类型的类型都能够使用算术运算符。这些运算符的操作数及结果都是右值。算术运算中,所有的小整型的操作数都会被转换为大整形的操作数,所有的操作数最后都会转换为相同的类型。
一元和二元的加减运算符可以用于指针上。
当在指针或算术值上使用一元加减运算符时,一元的加通常返回操作数本身,一元的减通常返回操作数的负值,这两种情况下可能发生类型的提升。
初始化器的值是非0时,转换为布尔值是true。
再使用算术表达式的时候要注意值的溢出和一些其它的算术异常(例:被0除)问题。
当一个值不在相应类型能够表示的范围内时,则会发生溢出。在大多数的系统中,发生溢出时并没有编译时或运行时的警告,有时溢出的值是呈“环形”的。
%的操作数必须是整数类型。
在进行除运算时,当除数和被除数同号时,商是正的,否则商是负的。早起版本的语言允许负的商四舍五入;新标准里要求商要向0取整。
取模运算符要求m和n都要是整数,并且n是非0的,那么(m/n)*n+m%n就与m相等了。
如果m%n是非0的,它的符号就和m一样。早起版本的语言在负的m/n向0取整时允许m%n和n的符号一样,但是现在禁止这种操作。除了-m溢出的情况,(-m)/n和m/(-n)和-(m/n)相等,m%(-n)和m%n相等,(-m)%n和-(m%n)相等。
“向0取整”:要求计算结果区最靠近0的那个。