char 與 signed char 和 unsigned char三者之間的關系


char 與 signed char 和 unsigned char三者之間的關系


  1. 三者都占用 1個字節,即 8 bit
  2. signed char取值范圍(-128, 127)
  3. unsigned char取值范圍(0, 255)
  4. 三個內存中存儲的都是一樣的東東,只是在運算時進行解析的方式不同
  5. 其如何解析和編譯器有關。不同的編譯器對char的解析不同,如將其定義為signed char的有:
  • VC編譯器
  • x86上的GCC
    將其定義為unsigned char的有:arm-linux-gcc
  1. char可以當字符用,原始ASCII標准里定義的字符碼值只有0~127,所以兩種定義都裝的下。
  2. char可以當單字節整數用,ASCII標准里的字符串都本質上是一個整數。
  3. unsigned char的高位擴展,以為沒有最高的符號位,所以8位_bit_都作為了數值位,因此能表示(0~255)。但在屏幕上顯示時可能會不同。

**測試代碼: **

#include <stdio.h>
void f(unsigned char v)
{  
    char c = v;  
    unsigned char uc = v;  
    unsigned int a = c, b = uc;  
    int i = c, j = uc;  
    printf("----------------\n");  
    printf("%%c: %c, %c\n", c, uc);  
    printf("%%X: %X, %X\n", c, uc);  
    printf("%%u: %u, %u\n", a, b);  
    printf("%%d: %d, %d\n", i, j);  
}  
int main(int argc, char *argv[])  
{  
    f(0x80);  
    f(0x7F);   
    return 0;  
} 

輸出:

%c: ?, ?
%X: FFFFFF80, 80
%u: 4294967168, 128
%d: -128, 128
----------------
%c: , 
%X: 7F, 7F
%u: 127, 127
%d: 127, 127 

http://blog.csdn.net/zx824/article/details/6884352


免責聲明!

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



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