首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C/C++ 判斷編譯器預設 char 為 signed 還是 unsigned 的簡單測試法

     編輯:程式設計綜合問答

測試程式碼

#include <stdio.h>
int main() {
    char c = -1;          // 賦值負數
    if (c > 0) 
        printf("unsigned char (預設 unsigned)\\n");
    else 
        printf("signed char (預設 signed)\\n");
    return 0;
}

原理說明

  • signed char 範圍 -128~127,-1 為 0xFF,有號比較 -1 > 0 為假。
  • unsigned char 範圍 0~255,0xFF 解釋為 255,無號比較 255 > 0 為真。

常見編譯器預設

編譯器/平台char 預設強制選項
GCC (x86/ARM Linux)signed-funsigned-char / -fsigned-char
MSVC (Windows)signed/J (改為 unsigned)
ARM Compiler 5/6unsigned--signed_chars

最佳實務

**程式碼勿依賴 char 有號性**;需有號用 int8_t/signed char,無號用 uint8_t/unsigned char。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved