Переполнение умножения unsigned long long int

У меня есть сомнения по поводу умножения unsigned long long int в компиляторе G++ 5.4.0. Почему 1-й фрагмент переполняется, хотя переменная n имеет тип unsigned long long int? Почему "LL" за 8 работает?

Пожалуйста, дайте мне какое-нибудь ключевое слово, чтобы я мог больше узнать об этой проблеме. Спасибо!

//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

0 ответов

Другие вопросы по тегам