Подтвердить что ты не робот

Печать длинного значения int в C

У меня есть две переменные типа long int, как показано ниже:

long int a=-2147483648, b=-2147483648;
a=a+b;

printf("%d",a);

Я получаю нуль. Я попытался изменить тип на long long int, но я все еще не получаю правильный ответ.

4b9b3361

Ответ 1

Вы должны использовать %ld для печати long int и %lld для печати long long int.

Обратите внимание, что только long long int гарантированно будет достаточно большим, чтобы сохранить результат этого вычисления (или, действительно, вводимые значения, которые вы используете).

Вам также необходимо убедиться, что вы используете свой компилятор в C99-совместимом режиме (например, используя параметр -std=gnu99 для gcc). Это связано с тем, что тип long long int не вводился до C99; и хотя многие компиляторы реализуют long long int в режиме C90 в качестве расширения, константа 2147483648 может иметь тип unsigned int или unsigned long в C90. Если это имеет место в вашей реализации, то значение -2147483648 также будет иметь неподписанный тип и поэтому будет положительным, и общий результат будет не тем, что вы ожидаете.

Ответ 3

Для ввода "long int" и вывода "long int" в C:

long int n;
scanf("%ld", &n);
printf("%ld", n);

Чтобы ввести "long long int" и "long long int" в C:

long long int n;
scanf("%lld", &n);
printf("%lld", n);

Надеюсь, вы очистились.