我注意到 C++11 第 5.6 节的一些措辞发生了变化。 (我正在查看 C++ 标准草案 N3242,日期为 2011 年 2 月 28 日。)新的(草案)标准包括以下句子:
“对于整数操作数, / 运算符产生代数商,并丢弃任何小数部分;”
这个说法在03标准(ISO-IEC-14882-2003)的5.6中并没有,但我不认为这是一个改变,是吗?这就是 C 和 C++ 多年来的工作方式,除非我失去了理智(无论如何这可能已经发生了)。
你不会生气的。
脚注5.6/4
said:
[C++03 footnote 74]:
根据正在进行的修订工作
ISO C 中,整数除法的首选算法如下
ISO Fortran 标准 ISO/IEC 1539:1991 中定义的规则,其中
商始终朝零舍入。
在 C++11 中,这种行为是明确要求的,而不是“首选”;兼容性部分列出了更改:
[C++11: C.2.2]:
Change:指定整数结果的舍入/
and %
理由:增加可移植性、C99兼容性。
对原始特征的影响:使用整数除法的有效 C++ 2003 代码
将结果舍入到 0 或负无穷大,而这
国际标准总是将结果四舍五入到 0。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)