相关疑难解决方法(0)

具有负值的模运算符

为什么这样的操作:

std::cout << (-7 % 3) << std::endl;
std::cout << (7 % -3) << std::endl;
Run Code Online (Sandbox Code Playgroud)

给出不同的结果?

-1
1
Run Code Online (Sandbox Code Playgroud)

c++

156
推荐指数
3
解决办法
13万
查看次数

c ++ 11中的运算符模数变化?

可能重复:
C++运算符%保证

在c ++ 98/03中

5.6-4

二元/运算符产生商,二元%运算符从第一个表达式除以第二个表达式得到余数.如果/或%的第二个操作数为零,则行为未定义; 否则(a/b)*b + a%b等于a.如果两个操作数都是非负的,那么余数是非负的; 如果没有,余数的符号是​​实现定义的.

在c ++ 11中:

5.6 -4

二元/运算符产生商,二元%运算符从第一个表达式除以第二个表达式得到余数.如果/或%的第二个操作数为零,则行为未定义.对于积分操作数,/运算符产生代数商,丢弃任何小数部分;如果商a/b在结果类型中可表示,则为(a/b)*b + a%b等于a.

正如您所看到的那样,为符号位定义的实现缺失了,它会发生什么?

c++ modulo language-lawyer c++11 c++03

11
推荐指数
1
解决办法
4472
查看次数

标签 统计

c++ ×2

c++03 ×1

c++11 ×1

language-lawyer ×1

modulo ×1