我很好奇为什么下面的代码返回负数,即使这个程序中的每个变量和函数初始化都是unsigned int。我以为他们总是被认为是积极的?。
#include <stdio.h>
unsigned int main ()
{
unsigned int ch = 0;
unsigned int asteriskValue = 0;
while(ch!=27)
{
ch = getch();
if (ch == 224)
{
increaseDecrease(&asteriskValue);
}
printf("%d",asteriskValue);
}
}
void increaseDecrease(unsigned int *value)
{
unsigned int upOrDown;
upOrDown = getch ();
if(upOrDown == 72)
(*value)--;
else if(upOrDown == 80)
(*value)++;
}
答案 0 :(得分:1)
我认为你的结果确实是一个正值,但是用“%d”标志打印它会告诉printf将其解释为有符号值,就像你在飞行中一样:(signed)asteriskValue < / p>
尝试使用“%u”格式而不是“%d”打印它。