ess*_*ssa 16 c++ int range long-integer
我有一个非常基本的问题,但我不确定我是否理解这个概念.假设我们有:
int a = 1000000;
int b = 1000000;
long long c = a * b;
Run Code Online (Sandbox Code Playgroud)
当我运行此,c显示负值,所以我改变也a和b到long long,然后一切都很好.那么,为什么我必须改变a和b,当其值在范围int和他们的产品被分配到c(这是long long)?
我正在使用C/C++
Yve*_*ust 20
该ints的不晋升为long long乘法之前,他们仍然intS和产品为好.然后产品被投入long long,但为时已晚,溢出已经发生.
有一个a或b long long应该工作,另一个将被提升.