@avion123678

Переполнение в с++?

Здравствуйте, почему при использовании типа short, операция умножения выполняется корректно:
#include <iostream>

int main()
{
    short a = 32767, b = 32767;

    std::cout << a * b;

    return 0;
}

Результат:
1 073 676 289

Но при использовании типа int:
#include <iostream>

int main()
{
    int a = 2147483647, b = 2147483647;

    std::cout << a * b;
    return 0;
}

Результат:
1
  • Вопрос задан
  • 1532 просмотра
Решения вопроса 1
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
Комментировать
Пригласить эксперта
Ответы на вопрос 1
fzfx
@fzfx
18,5 дм
потому что при умножении двух переменных тип переменной с результатом соответствует наибольшему типу исходных переменных. в вашем случае это int. а в int 461169207647875609 не помещается.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы