奇数总是在用剩余部分划分时返回楼层吗?

时间:2013-04-18 16:27:28

标签: c++

我是否可以确定C ++中的奇数应该总是以这样的方式返回结果的底层,即存在余数或者是否有任何例外?我的意思是:

int x = 5;
x = x/2;
cout<<x;      //2

3 个答案:

答案 0 :(得分:5)

是肯定的。你可以在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.

答案 1 :(得分:2)

整数除法在C / C ++中作为一个底层操作处理。

您在上面的示例中得到2,因为无法表示真实答案2.5

Some more verbose answers here

答案 2 :(得分:2)

是;整数之间的区分是始终在C ++中的整数除法:

  

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