%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,\n",a,b,c);
輸出:4294967295, 65535, 255,
unsigned int a = -1;
unsigned short b = -1;
unsigned char c = -1;
printf("%
d, %d, %d,\n",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,\n",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