在C中打印long int值

Jij*_*ose 22 c

我有两个long int类型的变量,如下所示:

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

printf("%d",a);
Run Code Online (Sandbox Code Playgroud)

我变零了.我尝试将类型更改为long long int,但我仍然没有得到正确的答案.

caf*_*caf 44

您必须使用%ld打印long int,并%lld打印long long int.

请注意,只long long int保证足够大以存储计算结果(或者实际上是您正在使用的输入值).

您还需要确保以C99兼容模式使用编译器(例如,使用-std=gnu99gcc选项).这是因为long long int直到C99才引入类型; 尽管许多编译器long long int在C90模式下实现作为扩展,但常量2147483648可以具有C90 的类型unsigned int或者unsigned long在C90中.如果在您的实现中就是这种情况,那么值也-2147483648将具有无符号类型,因此将是正数,并且整体结果将不是您所期望的.

  • @JijoPi 也将 `%lld` 用于 `scanf()`。 (2认同)