我可以确定 C++ 中的奇数在以有余数的方式进行除法时应该总是返回结果的下限,还是有任何例外?我是说:
int x = 5;
x = x/2;
cout<<x; //2
是的。你可以在 c++ 中确定这一点
ISO/IEC N3485(工作草案)在 5.6.4 中说
The binary / operator yields the quotient, and the binary % operator yields
the remainder from the division of the first expression by the second.
If the second operand of / or % is zero the behavior is undefined.
For integral operands the / operator yields the algebraic quotient with any
fractional part discarded;81 if the quotient a/b is representable in the type
of the result, (a/b)*b + a%b is equal to a; otherwise, the behavior of both
a/b and a%b is undefined.
是的; 整数之间的除法在 C++中始终是整数除法:
[C++11 5.6/4]:
二元/
运算符产生商,二元%
运算符产生第一个表达式除以第二个表达式的余数。如果/
or的第二个操作数%
为零,则行为未定义。对于整数操作数,/
运算符产生代数商,其中任何小数部分被丢弃;如果商a/b
在结果类型中是可表示的,(a/b)*b + a%b
则等于a
。