unknown character '0xa1' 與 main 缺少返回值#include
int main() {
int a;
for (a = 33; a <= 126; a = a + 1)
printf("%d\t%x\t\t%c\n", a, a, a);
}
// 編譯錯誤:
// error C2018: unknown character '0xa1' (x4)
// warning C4508: 'main' : function should return a value; 'void' return type assumed
unknown character '0xa1'0xA1 是**全形空白/中文標點**在某些編碼(如 Big5/GBK)中的首位元組。main 缺少返回值int main() 承諾返回 int,落脚未寫 return 0;(或其他整數)。return 0;(編譯器隱式插入),但 MSVC 舊版本嚴格要求顯式返回。#include
int main(void) {
int a;
for (a = 33; a <= 126; a++) // a++ 等價 a = a + 1
printf("%d\t%x\t\t%c\n", a, a, a);
return 0; // 明確返回
}
;、括號 ()、引號 ""'',改為半形。return 0;。a = a + 1 簡寫為 a++。gcc -Wall -Wextra -Werror -std=c11 -pedantic main.c -o main
cl /W4 /WX /std:c11 main.c
-Werror//WX 將警告視為錯誤,強迫修復所有問題(含缺少返回值)。
#include
int main(void) {
for (int i = 0; i < 128; i++) {
const char *desc = "";
if (i < 32 || i == 127) {
static const char *ctrl[] = {
"NUL","SOH","STX","ETX","EOT","ENQ","ACK","BEL",
"BS","HT","LF","VT","FF","CR","SO","SI",
"DLE","DC1","DC2","DC3","DC4","NAK","SYN","ETB",
"CAN","EM","SUB","ESC","FS","GS","RS","US"
};
desc = (i < 32) ? ctrl[i] : "DEL";
}
printf("%3d 0x%02X %c %s\n", i, i, (i>=32 && i<127)?i:' ', desc);
}
return 0;
}