为什么这不能按预期工作?
int main()
{
unsigned char louise, peter;
printf("Age of Louise: ");
scanf("%u", &louise);
printf("Age of Peter: ");
scanf("%u", &peter);
printf("Louise: %u\n", louise);
printf("Peter: %u\n", peter);
return 0;
}
输出:
Age of Louise: 12
Age of Peter: 13
Louise: 0
Peter: 13
但是,如果我交换变量声明,它会起作用:
unsigned char peter, louise;
输出:
Age of Louise: 12
Age of Peter: 13
Louise: 12
Peter: 13
我还注意到使用int
orunsigned int
无需交换变量即可工作,但char
不需要。
我已经尝试printf("%u", louise);
在 for louise 之后放置scanf()
,并且该值已正确保存。如果我注释掉第二个scanf()
它也可以正常工作......
“问题”显示在 Windows (DevCpp) 和 Linux (kwrite + make) 上。这是编译器的错误,还是我的?