-
简介
本文主要介绍在C++11中关于整型数据的取余与除法运算的内容。
-
除法运算
在C++11中,两个整数相除的结果仍然是整数(除数不能为0),整数相除会舍弃小数部分,例如:
int val = 21 / 6 //得到的val = 3
在整数除法中,当被除数和除数符号相反时,得到的结果是负数,当两者的符号相同时,得到的结果是整数,如:
int a = 8 / 3; // 2
int b = 8 / -3; // -2
int c = -8 / 3; // -2
int d = -8/-3; // 2
在除法计算中,c++11规定计算的结果都向0取整,也就是说得到的结果直接切除小数部分,不管商是整数还是负数,如:
8 / -3 = -2.6666...,得到的结果就直接去掉小数部分,也就是结果为2。
-
取余运算
取余运算又称取模运算,计算两个整型相除得到的余数,参与取模运算的两个操作数必须都是整型
int a = 8 %3.5; // 编译出错
在C++11标准中,m%n的值与m的符号相同,也就是说m%n = m%(-n),(-m)%n = -(m%n),例如:
int a = 8 %3; // 2(结果与8符号一致)
int b = 8 % -3; // 2(结果与8符号一致)
int c = -8 % 3; // -2(结果与-8符号一致)
int d = -8%-3; // -2(结果与-8符号一致)