java short 无符号_有符号/无符号的int,short和char
生活随笔
收集整理的這篇文章主要介紹了
java short 无符号_有符号/无符号的int,short和char
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在此引用它作為參考:
#include
int main(void){
int l;
short s;
char c;
l = 0xdeadbeef;
s = l;
c = l;
printf("l = 0x%x (%d bits)\n", l, sizeof(l) * 8);
printf("s = 0x%x (%d bits)\n", s, sizeof(s) * 8);
printf("c = 0x%x (%d bits)\n", c, sizeof(c) * 8);
return 0;
}
我在我的機器上的輸出是: -
l = 0xdeadbeef (32 bits)
s = 0xffffbeef (16 bits)
c = 0xffffffef (8 bits)
以下是我的理解: -
賦值s = l,c = l將導致s和c被提升為整數,它們將分別具有l的最后16位(0xbeef)和最后8位(0xef) .
Printf嘗試將上述每個值(l,s和c)解釋為無符號整數(因為%x作為格式說明符傳遞) . 從輸出中我看到符號擴展已經發生 . 我懷疑是因為%x代表unsigned int,為什么在打印s和c時會發生符號擴展? s的輸出不應該是0x0000beef而c的輸出應該是0x000000ef嗎?
總結
以上是生活随笔為你收集整理的java short 无符号_有符号/无符号的int,short和char的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1048 数字加密.测试点2.5
- 下一篇: 经典对白2