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