算术运算符
对大多数运算符来说,布尔类型的运算对象将被提升为int类型。
当作用于算术类型的对象时,算术运算符+、一、*、/的含义分别是加法、减法、乘法和除法。整数相除结果还是整数,也就是说,如果商含有小数部分,直接弃除:
int ival1 = 21/6;//ival1是3,结果进行了删节,余数被抛弃掉了
int ival2 = 21/7;//ival2是3,没有余数,结果是整数值
运算符%俗称“取余”或“取模”运算符,负责计算两个整数相除所得的余数,参与取余运算的运算对象必须是整数类型:
int ival = 42;
double dval = 3.14;
ival % 12;//正确:结果是6
ival % dval;//错误:运算对象是浮点类型
在除法运算中,如果两个运算对象的符号相同则商为正(如果不为0的话),否则商为负。C++语言的早期版本允许结果为负值的商向上或向下取整,C++11新标准则规定商一律向0取整(即直接切除小数部分)。
根据取余运算的定义,如果m和n是整数且n非o,则表达式(m/n)*n+m%n的求值 结果与m相等。隐含的意思是,如果m%n不等于0,则它的符号和m相同。C++语言的早期版本允许m%n的符号匹配n的符号,而且商向负无穷一侧取整,这一方式在新标准中已经被禁止使用了。除了-m导致溢出的特殊情况,其他时候(-m)/n和m/(-n)都等于 -(m/n),m%(-n)等于m%n,(-m)%n等于-(m%n)。具体示例如下:
21%6; /*结果是3 */ 21/6; /*结果是3 */
21%7; /*结果是0 */ 21/7; /*结果是3 */
-21%-8; /*结果是-5 */ -21/-8; /*结果是-2 */
21%-5; /*结果是1 */ 21/-5; /*结果是-4 */
标签:m%,21,结果,算术,运算符,76,21%,运算
From: https://www.cnblogs.com/codemagiciant/p/17270080.html