很久没有给出我期望的结果

问题描述 投票:0回答:1

我使用下面的代码来获取 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);
}
c sum calculator long-integer
1个回答
0
投票

如果我对您的代码进行一点小小的更改,我就会得到您的输出:

#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

© www.soinside.com 2019 - 2024. All rights reserved.