簡體   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