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

Related Posts:

  • C 語言 - malloc、free 與 calloc malloc 跟 free     一般來說要將函式結果回傳是不能用 pointer,因為一旦函式結束 stack 的空間就會被釋出,所以 pointer 會指向的資料是危險的。這時就會先動態地宣告一個位址給 pointer,但這類的記憶體會被存放在 heap 而非 stack,所以開發者必須自行釋放。 pointer.c void showMalloc(int poi… Read More
  • C 語言 - function pointer 函數指標 function pointer 概念     基本上有 data 的 pointer 就會有 function 的 pointer。 正確的 ( 回傳 int 的 function ) int (*pfi)(); 錯誤的 ( 回傳 int pointer 的 function ) int *pfi(); function pointer 宣告     利用 typedef,… Read More
  • C 語言 - CLI ( Command Line Interface ) 設計 (1)CLI 命令列介面     在設計 CLI 的程式時,最好的方法是遵從 IEEE Std 1003 ( POSIX ) 對 program 的 command-line options 之規範。所以用 getopt 去做 parse command-line 是最簡單的,有一點要注意的是 GNU 提供的 getopt 支援 " -- ",這個 PO… Read More
  • C 語言 - warning: left shift count >= width of type warning: left shift count >= width of type     一般來說,就是 shift 的 bit 大於資料型態的 bit 數。但有時使用 unsigned long 仍然會出錯,因為 unsigned long 會依照系統的不同,有時是 32 bit 有時是 64 bit,所以這時用 unsigned long long 較為安全 ( 保證 64 bit… Read More
  • C/C++ - Function Pointer 應用 CallBack FunctionFunction Pointer 應用 CallBack Function     有了 Function Pointer 就意味著,Callback Function 能被實現。     Callback Function : A 跟 B 講 "看到 C 就打電話給我" 打電話給 A = Callback Function     main.cpp ( A ) … Read More

0 意見:

張貼留言

Popular Posts