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,\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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM