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,&

我的简单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;
}
#包括
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
打印出3
wykladnik%10
打印出5

这个错误很有趣,因为
wykladnik%10
的值总是比它应该的值大2,我不知道为什么


我希望我提供了足够的信息,有人能帮助我。我已尝试查找此错误10分钟,但仍然看不到它。

您使用了错误的格式说明符try
%llu

由于数据类型使用了错误的说明符,因此您得到了错误的输出。它将调用未定义的行为。将格式说明符从
%d
更改为
%llu
,用于
无符号长
%u
无符号整数

在扫描后立即使用
%llu
而不是
%d
打印podstawa和wykladnik