0

我对 G++ 5.4.0 编译器中 unsigned long long int 的乘法表示怀疑。为什么即使变量 n 是 unsigned long long int 类型,第一个片段也会溢出?为什么 8 后面的“LL”有效?

请给我一些关键字,我可以更多地了解这个问题。谢谢!

//WRONG RESULT: 1549413176
int main(){
  unsigned long long int n = 1804289383;
  std::cout<<n * 8 <<endl;
  return 0;
}

//Correct :14434315064
int main(){
  unsigned long long int n = 1804289383;
  std::cout<<n * 8LL <<endl;
  return 0;
}

编译器:g++ 5.4.0

4

0 回答 0