關於C語言中整數范圍的一些解釋


示例代碼

#include <stdio.h>

int main() {
    
    char c = 255;
    printf("%d\n", c);
    int i = 255;
    printf("%d\n", i);

    return 0;
}

 

輸出結果

-1
255

 

解釋

  計算機是以二進制補碼的形式存儲數值。

  char 的大小是 1 個字節(8bit),取值范圍是 -128 ~ 127。255 的二進制原碼是 1111 1111,而 1111 1111 作為補碼的值是 -1,所以 char c = 255 輸出 -1。假設 char c = 257。257 的二進制是 (1)0000 0001,丟棄超出范圍的高位 1,符位為 0 是正數,正數的補碼是其本身,代碼結果則輸出 1。

  int 的大小是 4 個字節(32bit),取值范圍是 -2^31 ~ 2^31 - 1,其范圍值通常取決於編譯器(CPU)。255 的二進制原碼是 0000 0000 0000 0000 0000 0000 1111 11111,int 的取范圍遠遠超過了 char 的取范圍,所以 int i = 255 輸出 255。


免責聲明!

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



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