【发布时间】:2017-12-06 01:36:19
【问题描述】:
为什么下面的代码会给出整数溢出警告:
#include <stdio.h>
int main()
{
long long int x = 100000 * 99999;
return 0;
}
而以下代码完美运行:
#include <stdio.h>
int main()
{
long long int x = 100000000000000;
return 0;
}
【问题讨论】:
-
你乘以
int值(不是两个long long值) -
来自reference for integer literal:“整数字面量的类型是该值可以适合的第一个类型” - 所以在这种情况下
int -
但在任何一种情况下,我都只是分配数字。两种情况下的结果应该相同,因为第一种情况下的乘法结果比第二种情况下的要小。
标签: c++