#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/6 | unsigned | --signed_chars |
**程式碼勿依賴 char 有號性**;需有號用 int8_t/signed char,無號用 uint8_t/unsigned char。