Умножение чисел в C

Я написал следующий код для умножения двух чисел, и я вижу результат, который будет неправильным. Я предполагаю, что тип данных не имеет правильного значения. Но ответ на его печать неверен.

#include<stdio.h>
main()
{
    long int val1,val2;
    val1=val2=1235;
    char c = 'y';
    switch(c)
    {
        case 'y' : printf("%20d",val1*val2);
            break;
        default: printf("invalid");
            break;
    }
    return 0;
}

ВЫХОД:
17897 // что не правильный ответ
// это должно быть 1525225

1 ответ

Решение

Тип данных содержит правильное значение, но вы используете неправильный спецификатор. Вы должны использовать %ld с длинным инт.

printf("%20ld",val1*val2);

Я дважды проверил, и это сработало.

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