C文字和溢出

在我的机器上,anint是 32 位,代码如下:

int64_t m = (int64_t) 1 << 60;
int64_t n = (int64_t) 2048 * 2048 * 2048;

给出了 2^60 和 2^33 的数学预期结果,即使标准似乎说 1 和 2048 应该被视为“int”。

我应该认为这个结果是运气,还是 C99 标准保证我不会溢出?

回答

铸造优先于许多其他操作,您可以在此处查看顺序http://users.eecs.northwestern.edu/~wkliao/op-prec.htm

所以你实际上一直在使用 int64_t (顾名思义,它是一个 64 位的有符号整数),这就是你不会溢出的原因。


以上是C文字和溢出的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>