返回信息流long long hehe;
int a = 2234567823;
hehe = a * a;
这段代码是不是不行?如果不行,为什么? 是不是得把 a 也改成long long?
谢谢
这是一条镜像帖。来源:北邮人论坛 / cpp / #80221同步于 2014/6/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
两个int相乘,这个会不会溢出?
spicewolf
2014/6/13镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
至少被乘数必须是预测结果的合适数据类型:
int a = 2234567823; // warning:越界!
hehe = (long long)a * a;
【 在 spicewolf 的大作中提到: 】
: long long hehe;
: int a = 2234567823;
: hehe = a * a;
: ...................
x86-64和x86上,int不能是2234567823。最大是2147483647。有符号整数溢出是“未定行为”,也就是说什么都可能发生,从“什么也没发生”到“楼主的小jj没了”都可能。
改成long long是64位的,看样子可以存得下它的平方。