代碼報錯「說明語法錯誤」指向 int max(int x,int y); 行,核心問題在於函數聲明位置與定義語法。
void main() {
int max(int x,int y); // 錯誤1:函數聲明放在函數內部(C89不允許,C99允許但不推薦)
// ...
}
int max(int x,int y); // 錯誤2:函數定義時多了分號
{
int z;
if(x>y) z=x;
else z=y;
return (z);
getch(); // 錯誤3:return 後代碼永不執行
}
int max(int x,int y) { ... }return 後的 getch() 永遠不會執行,編譯器會警告#include
#include // getch() 需此頭文件
// 全域函數聲明
int max(int x, int y);
int main() {
int a, b, t;
printf("請輸入兩個整數: ");
scanf("%d %d", &a, &b); // 空格分隔,非逗號
t = max(a, b);
printf("最大值: %d\n", t);
getch(); // 暫停控制台
return 0;
}
// 函數定義:無分號
int max(int x, int y) {
int z;
if (x > y) z = x;
else z = y;
return z;
}
scanf("%d %d", &a, &b):以空白字元(空格、換行、Tab)分隔輸入,非逗號getch() 需 conio.h,非標準庫,Windows 特有;跨平台用 getchar()int main(void) 或 int main(int argc, char *argv[]),返回 int編譯器報錯行號往往指向錯誤發現位置,非實際錯誤位置。需向上查找語法結構完整性:大括號匹配、分號缺漏、聲明語法正確性。