【发布时间】:2014-08-08 12:57:38
【问题描述】:
下面的程序
short b =-10;
printf("%x %d",b,sizeof(b));
产出(与 2008 年相比)
FFFFFFF6 2
为什么不
FFF6 2
签名字符也是如此。
【问题讨论】:
-
因为所有小于
int类型的整数值都被提升为int值。 -
签名扩展。这个问题肯定有重复。
-
另外,
sizeof运算符返回一个size_t类型的值,通常是unsigned long,这意味着您的格式代码错误(应该是"%ld")。 -
@JoachimPileborg 实际上,对于
size_t,您应该使用格式"%zu"
标签: c unsigned-char