int main()
{
unsigned int b;
signed int a;
char z=-1;
b=z;
a=z;
printf("%d %d",a,b);
}
给出-1 -1。为什么没有符号扩展,也就是什么时候发生?
答案 0 :(得分:10)
发生签名扩展DID,但您打印的结果不正确。在您的printf中,您为%d
指定了b
,但b
未签名,您应该使用%u
来打印b
。
printf不知道其参数的类型,并使用指定的格式来解释它们。
printf("%d %u",a,b);
答案 1 :(得分:3)