我有两个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=gnu99
gcc选项).这是因为long long int
直到C99才引入类型; 尽管许多编译器long long int
在C90模式下实现作为扩展,但常量2147483648
可以具有C90 的类型unsigned int
或者unsigned long
在C90中.如果在您的实现中就是这种情况,那么值也-2147483648
将具有无符号类型,因此将是正数,并且整体结果将不是您所期望的.