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將導(dǎo)致s和c被提升為整數(shù),它們將分別具有l(wèi)的最后16位(0xbeef)和最后8位(0xef) .
Printf嘗試將上述每個值(l,s和c)解釋為無符號整數(shù)(因為%x作為格式說明符傳遞) . 從輸出中我看到符號擴展已經(jīng)發(fā)生 . 我懷疑是因為%x代表unsigned int,為什么在打印s和c時會發(fā)生符號擴展? s的輸出不應(yīng)該是0x0000beef而c的輸出應(yīng)該是0x000000ef嗎?
總結(jié)
以上是生活随笔為你收集整理的java short 无符号_有符号/无符号的int,short和char的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1048 数字加密.测试点2.5
- 下一篇: bbs.php168,PHP168与PH