[英]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.