33

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

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

printf("%d",a);

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

4

3 回答 3

58

您必须使用%ld打印 along int%lld打印 a long long int

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

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

于 2013-07-22T03:40:59.047 回答
3

利用printf("%ld",a);

查看printf的格式说明符

于 2013-07-22T03:44:08.520 回答
2

在 C 中输入“ long int ”并输出“ long int ”是:

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

在 C 中输入“ long long int ”并输出“ long long int ”是:

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

希望你已经清除..

于 2017-05-09T03:02:16.637 回答