繁体   English   中英

C中的short int变量

[英]Short int variable in c

以下程序

short b =-10;
printf("%x %d",b,sizeof(b));

产出(vs 2008)

 FFFFFFF6 2 

为什么不

 FFF6 2 

带签名的字符也是如此。

这是由于整数类型提升。

您的短裤被隐式提升为int。 (此处为32位)因此在这种情况下,这些是符号扩展促销。

因此,您的printf()打印出完整的32位int的十六进制数字。

当您的short值为负数时,符号扩展将用1填充前16位,因此得到的是fffffff6而不是fff6。


格式字符串中的占位符%x将相应的参数解释为unsigned int。

要将参数打印为短参数,请在占位符上添加一个长度修饰符h:

printf("%hx", hex);

此处h表示转换将是dioux X或n中的一个,下一个指针是一个指向short int或unsigned short int(而不是int)的指针。

键盘链接: http : //codepad.org/aX2MzY0o

看到这个: http : //en.wikipedia.org/wiki/Printf_format_string#Format_placeholders

因为它被提升为int数据类型。 表达式sizeof(type) * CHAR_BIT计算得出足以包含所需范围的位数。

另请注意,short可能更窄,但宽度也可能与int相同。 始终保证int等于或大于short int。

CPU             short   int
8 bit           16      16
16 bit          16      16
32 bit          16      32
64 bit          16      32

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM