我使用下面的代码来获取 2 个数字的 long int 总和。 我将输入作为长整型,并期望通过 printf 得到长整型答案,但得到的结果是负数。
#include <stdio.h>
int main(void)
{
long x;
long y;
printf("enter x:\n");
scanf("%ld", &x);
printf("enter y:\n");
scanf("%ld", &y);
printf("%li\n", x + y);
}
如果我对您的代码进行一点小小的更改,我就会得到您的输出:
#include <stdio.h>
#include <stdint.h>
int main(void)
{
int32_t x;
int32_t y;
printf("enter x:\n");
scanf("%d", &x);
printf("enter y:\n");
scanf("%d", &y);
printf("%i\n", x + y);
}
% ./a.out
enter x:
2000000000
enter y:
2000000000
-294967296
这表明您使用的平台
long
是 32 位。为了确保您使用的是 64 位有符号整数,请使用 int64_t
而不是 long
。