bir*_*rda 1 c++
如果intA*intB结果足够大,则会在2 ^ 31边界溢出,并且您无法获得预期的结果.
int64_t value = (intA * intB) - int64A
然而,这产生了预期值.
int value = (intA * intB) - int64A
在低级别发生了什么意味着存储在int中的相同(坏)操作是正确的,但是在int64_t中却没有?
cad*_*luk 6
这是未定义的行为.签名溢出未定义.未定义意味着可能发生任何事情,包括程序正常工作.
要超越标准边界并解释此特定未定义行为实例的行为方式,您需要低级信息,例如GCC版本和体系结构.
归档时间:
10 年,4 月 前
查看次数:
40 次
最近记录: