指针忽略C中的无符号特征?

时间:2015-09-29 22:49:36

标签: c

我很好奇为什么下面的代码返回负数,即使这个程序中的每个变量和函数初始化都是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)++;
}

1 个答案:

答案 0 :(得分:1)

我认为你的结果确实是一个正值,但是用“%d”标志打印它会告诉printf将其解释为有符号值,就像你在飞行中一样:(signed)asteriskValue < / p>

尝试使用“%u”格式而不是“%d”打印它。