我的简单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,&wykladnik);
printf("%d %d",(podstawa%10),(wykladnik%10) );
}
return 0;
}
如果你编译这个程序,即使输入数据是正确的,你也能看到它。
Wykladnik%10
提供错误的号码。
例如,podstawa
和wykladnik
的值为3,而podstawa%10
打印出3 wykladnik%10
打印出5。
这个错误很有意思,因为wykladnik%10
的值总是比它应该大2,我不明白为什么。
我希望我提供了足够的信息,有人能够帮助我。我一直试图找到这个错误10分钟,我仍然看不到它。
答案 0 :(得分:5)
由于您的数据类型使用了错误的说明符,因此输出错误。它将调用未定义的行为。将格式说明符从%d
更改为%llu
unsigned long long
,将%u
更改为unsigned int
答案 1 :(得分:1)
您使用了错误的格式说明符try "%llu"
。