我有一个问题需要任何专家的指导:
由于具有
short
类型的值作为参数传递给printf()
函数,它将自动提升为int
类型,这就是为什么printf()
函数将值视为int
类型而不是short
类型的原因。所以基本上
short
type 是 16 位宽,0000000000000000
而int
type 是 32 位宽,即00000000000000000000000000000000
.假设我
num
用short
type 声明了一个变量调用并将其初始化为 -32 的值,这意味着该short
类型的最高有效位将是1
,即0000000011100000
。当我将此值传递给 时
printf()
,它会被转换为int
类型,所以它会变成00000000000000000000000011100000
.在步骤 4 中,当它转换为 时
int
,最高有效位是0
。为什么,当我使用说明
%hd
符甚至说明%d
符时,它仍然会提示我输入负值而不是正值?