C中的模,输出错误
我的简单C程序中有一个非常恼人的问题,我不明白为什么这段代码不起作用 代码如下:C中的模,输出错误,c,C,我的简单C程序中有一个非常恼人的问题,我不明白为什么这段代码不起作用 代码如下: #include <stdio.h> int main() { unsigned long long podstawa,wykladnik; unsigned int d; scanf("%d",&d); while(d>0) { d--; scanf("%d %d",&podstawa,&
#include <stdio.h>
int main()
{
unsigned long long podstawa,wykladnik;
unsigned int d;
scanf("%d",&d);
while(d>0)
{
d--;
scanf("%d %d",&podstawa,&wykladnik);
printf("%d %d",(podstawa%10),(wykladnik%10) );
}
return 0;
}
#包括
int main()
{
未签名的长波德斯塔瓦,wykladnik;
无符号整数d;
scanf(“%d”、&d);
而(d>0)
{
d--;
scanf(“%d%d”、&podstawa和wykladnik);
printf(“%d%d”,(podstawa%10),(wykladnik%10));
}
返回0;
}
如果你编译这个程序,你将能够看到,即使输入的数据是正确的
Wykladnik%10
给出了错误的号码
例如,podstawa
和wykladnik
的值为3,而podstawa%10
打印出3wykladnik%10
打印出5
这个错误很有趣,因为wykladnik%10
的值总是比它应该的值大2,我不知道为什么
我希望我提供了足够的信息,有人能帮助我。我已尝试查找此错误10分钟,但仍然看不到它。您使用了错误的格式说明符try
%llu由于数据类型使用了错误的说明符,因此您得到了错误的输出。它将调用未定义的行为。将格式说明符从%d
更改为%llu
,用于无符号长
和%u
无符号整数
在扫描后立即使用%llu
而不是%d
打印podstawa和wykladnik