2020年4月12日 星期日

C 語言 - unsigned char

char 與 unsigned char 的區別

    單看兩個變數類型是沒有差別的, char -128 ~ 127, unsigned char 0 ~ 255,範圍大小一樣,並沒差別。唯一差別是在賦值的時候

賦值的時候 char 與 unsigned char 的區別

    (signed) char 有符號 bit ,這會導致你在賦予值時,(signed) char 會依照情況去賦予值。
    void unsignedcharTest(unsigned char value)
    {
        char c = value;
        unsigned char uc = value;
        int char_to_int = c;
        int unchar_to_int = uc;
        unsigned int char_to_unint = c;
        unsigned int unchar_to_unint = uc;
        printf("%%c: %c, %c\n", c, uc);
        printf("%%X: %X, %X\n", c, uc);
        printf("%%d: %d, %d\n", char_to_int, unchar_to_int);
        printf("%%u: %u, %u\n", char_to_unint, unchar_to_unint);
    }

    int main()
    {
        unsignedcharTest(0x7F); // 0111 1111 符號 bit 為 0 不會擴展
        unsignedcharTest(0x80); // 1000 0000 符號 bit 為 1 會擴展,補 1  
        return 0;
    }
    結果 :
    %c: , 
    %X: 7F, 7F
    %d: 127, 127
    %u: 127, 127
    %c: , 
    %X: FFFFFF80, 80
    %d: -128, 128
    %u: 4294967168, 128

參考資料 :
https://www.itread01.com/content/1547130625.html

0 意見:

張貼留言

Popular Posts