我有两个long int
类型的变量,如下所示:
long int a=-2147483648, b=-2147483648;
a=a+b;
printf("%d",a);
我变零了。我尝试将类型更改为long long int
,但我仍然没有得到正确答案。
答案 0 :(得分:42)
您必须使用%ld
打印long int
,并%lld
打印long long int
。
请注意,只保证long long int
足以存储计算结果(或者实际上是您正在使用的输入值)。
您还需要确保在C99兼容模式下使用编译器(例如,使用gcc的-std=gnu99
选项)。这是因为直到C99才引入long long int
类型;虽然许多编译器在C90模式下实现long long int
作为扩展,但常量2147483648
在C90中可能具有unsigned int
或unsigned long
类型。如果在您的实现中出现这种情况,则-2147483648
的值也将具有无符号类型,因此将为正数,并且整体结果将不是您所期望的。
答案 1 :(得分:3)
使用printf("%ld",a);
查看format specifiers的printf
答案 2 :(得分:1)
long int n;
scanf("%ld", &n);
printf("%ld", n);
long long int n;
scanf("%lld", &n);
printf("%lld", n);
希望你已经清除..