我无法确定以下程序如何输出6和-250。

#include<stdio.h>

int main()
{
    unsigned char p=-250;
    printf("%d",p);
    unsigned int p1=-250;
    printf("%d",p1);
    return 0;
}

作为一个无符号整数,它只输出正值。p值如何输出6请帮助我理解。

最佳答案

printf不是类型安全的它会打印您要求它打印的任何内容,并且%d会显示“有符号整数”。您有责任提供各种类型的配套产品。因为unsigned char只有8位宽,所以文本-250会环绕到+6,当被解释为有符号整数时,它仍然是+6注意,当通过变量参数传递时,charshort int(以及它们的有符号/无符号对应项)都被提升为int-类型。

关于c - -250打印为6,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7139658/

10-13 06:40