unsigned 赋值负数输出情况 & printf输出格式
生活随笔
收集整理的這篇文章主要介紹了
unsigned 赋值负数输出情况 & printf输出格式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
%d 有符號10進制整數
%ld 長整型
%hd短整型
%i 有符號10進制整數
%o 無符號8進制整數
%u 無符號10進制整數
%x 無符號的16進制數字,并以小寫abcdef表示
%X 無符號的16進制數字,并以大寫ABCDEF表示
%F/f 浮點數 %E/e 用科學表示格式的浮點數
%g 使用%f和%e表示中的總的位數表示最短的來表示浮點數 G 同g格式,但表示為指數
%c 單個字符
%s 字符串
unsigned int a = -1;
unsigned short b = -1;
unsigned char c = -1;
printf("%u, %d, %d, ",a,b,c);
輸出:4294967295, 65535, 255,
unsigned int a = -1;
unsigned short b = -1;
unsigned char c = -1;
printf("%d, %d, %d, ",a,b,c);
輸出:-1, 65535, 255,
a定義為unsigned 輸出應該和上面的一樣為4294967295啊
因為%d是按int輸出,所以后面兩個數的存儲仍然是按照所存儲二進制輸出,沒有涉及到int最高位的符號位
/*
us的二進制表示是0xffff,以4個字節的int類型輸出時表示的是0x0000ffff,所以輸出65535
un的二進制表示是0xffffffff,以4個字節的int類型輸出時表示的是-1,所以輸出-1
*/
unsigned int a = -1;
unsigned short b = -1;
unsigned char c = -1;
printf("%d, %hd, %d, ",a,b,c);
輸出:-1, -1, 255,
啊,各種地方都需要注意啊
如果使用cout來輸出:
cout<< a<<endl;
cout<< b<<endl;
cout<< c<<endl;
輸出:4294967295, 65535,
c我如果為-1沒有輸出,如果是0-255之間為對應的ascii碼
cout<<us<<endl; // -1在無符號的short數據中是65535
cout<<un<<endl; // -1在無符號的int數據中是4294967295
總結
以上是生活随笔為你收集整理的unsigned 赋值负数输出情况 & printf输出格式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java placeholder_jav
- 下一篇: PCIe的事务传输层的处理(TLP)