C++中的 求模运算 和 求余运算

盘点C++中的求模运算求余运算

引入

先看看几个问题:

 // 下面三个表达式的结果分别是多少? 
 3 / 1
 3 / -1 
-3 / 1

// 其中u的值是多少?
unsigned u = -1;

要回答这几个问题,就必须了解C++中的求模运算求余运算
求模运算求余运算这两个概念,大多数人乍一听都觉得是差不多的
事实上,求模运算求余运算 实际上还是有一定的区别的

求余运算求模运算

求余运算求模运算概念很相似,容易混淆

求余运算商向0取整
如-5对3求余:

(-5) / 3 = -1  
(-5) mod 3 = -5 - (3 * (-1)) = -2

求模运算商向负无穷方向取整
如-5对3求余:

(-5) / 3 = -2 
(-5) mod 3 = -5 - (3 * (-2)) = 1

C++中的%是 求余运算符 不是 求模运算

// a的最终结果是-2
// 在c和cpp中 除法是向0取整
// (-5) / 3 = -1
// 所以 (-5) mod 3 = -5 - (3 * (-1)) = -2
int a = (-5) % 3;

对unsigned类型赋负值会进行的是求模运算

// unsigned char 保存 0~255 共 256 个数
// 对其赋-1
// -1先对256取模 注意是取模 得到255
// 再将 255 赋值给 c
unsigned char c = -1;
// 对无符号类型赋有符号值将会发生如此转换
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页