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