以正确的方式使用 long long 数据类型
Using long long data type in the correct way
我的代码有什么问题?当第一个值大于第二个值时,为什么我得到负值?这仅在我使用 long long 数据类型时发生。我只是这里的新手,请原谅我提出这个愚蠢的问题。这是代码:
#include<stdio.h>
int main()
{
long long int a, b, res;
while(scanf("%d %d", &a, &b)!=EOF)
{
if(a>b)
{
res=a-b;
printf("%d\n", res);
}
else
{
res=b-a;
printf("%d\n", res);
}
}
return 0;
}
printf("%d\n", res);
它打印的是int,你想打印long long int,所以你应该使用:
printf("%lld\n", res);
同样适用于 scanf()
,使用 %lld
作为格式说明符来获取 long long
的输入
long long int a, b, res; /* firstly initialize all variable, enable warning flag */
由于在上面的语句中 a
、b
和 res
被声明为 long long
您应该使用 %lld
作为格式说明符而不是 %d
否则会导致未定义的行为。
scanf("%d %d", &a, &b); ---> scanf("%lld %lld", &a, &b);
printf("%d\n", res); ---> printf("%lld\n", res);
旁注,始终使用 -Wall -Wpedantic -Wstrict-prototypes -Werror
.
之类的标志编译代码
你不仅在打印 int 而不是 long long,你还在读取 int 而不是 long long
将所有 %d
更改为 %lld
如果它不适用于您的编译器,请使用 <inttypes.h>
并将 %d
更改为 %I64d
每种数据类型都有特定的格式说明符。您必须使用有效的。 long long int 的格式说明符是 %lld 而不是 %d.
查看 link 了解有关 C 中数据类型的详细信息:
https://www.geeksforgeeks.org/data-types-in-c/
我的代码有什么问题?当第一个值大于第二个值时,为什么我得到负值?这仅在我使用 long long 数据类型时发生。我只是这里的新手,请原谅我提出这个愚蠢的问题。这是代码:
#include<stdio.h>
int main()
{
long long int a, b, res;
while(scanf("%d %d", &a, &b)!=EOF)
{
if(a>b)
{
res=a-b;
printf("%d\n", res);
}
else
{
res=b-a;
printf("%d\n", res);
}
}
return 0;
}
printf("%d\n", res);
它打印的是int,你想打印long long int,所以你应该使用:
printf("%lld\n", res);
同样适用于 scanf()
,使用 %lld
作为格式说明符来获取 long long
long long int a, b, res; /* firstly initialize all variable, enable warning flag */
由于在上面的语句中 a
、b
和 res
被声明为 long long
您应该使用 %lld
作为格式说明符而不是 %d
否则会导致未定义的行为。
scanf("%d %d", &a, &b); ---> scanf("%lld %lld", &a, &b);
printf("%d\n", res); ---> printf("%lld\n", res);
旁注,始终使用 -Wall -Wpedantic -Wstrict-prototypes -Werror
.
你不仅在打印 int 而不是 long long,你还在读取 int 而不是 long long
将所有 %d
更改为 %lld
如果它不适用于您的编译器,请使用 <inttypes.h>
并将 %d
更改为 %I64d
每种数据类型都有特定的格式说明符。您必须使用有效的。 long long int 的格式说明符是 %lld 而不是 %d.
查看 link 了解有关 C 中数据类型的详细信息: https://www.geeksforgeeks.org/data-types-in-c/