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

C語言語法錯誤修正:if a,b 非法聲明與變量定義規範

     編輯:C 語言問答

編譯錯誤秒懂:if a,b 不是變量聲明

錯誤代碼

if a,b  // ❌ 編譯錯誤:if 後必須跟條件表達式,不能聲明變量
int a,b,sum=0,i;  // 這行正確但位置錯誤

錯誤原因

  • if 是**選擇語句**,語法:if (expression) statement。
  • a,b 是**聲明** (或逗號表達式),不能直接跟在 if 後。
  • 可能意圖:int a, b, sum = 0, i; 定義變量,放在函數開頭或塊開頭 (C89) / 任意位置 (C99+)。

修正版:輸入兩整數求區間偶數和

#include <stdio.h>

int main(void) {
    int a, b, sum = 0, i;
    printf("輸入兩個整數 (空格分隔): ");
    if (scanf("%d %d", &a, &b) != 2) return 1;

    // 確保 a <= b
    if (a > b) { int t = a; a = b; b = t; }

    // 找第一個偶數
    int start = (a % 2 == 0) ? a : a + 1;
    for (i = start; i <= b; i += 2) sum += i;

    printf("區間 [%d, %d] 偶數和 = %d\n", a, b, sum);
    return 0;
}

變量定義規範 (C99/C11)

  • 可在**塊內任意位置**定義變量 (不必在開頭)。
  • 推薦**就近定義、初始化**、**縮小作用域**。
  • 循環變量在 for (int i=...) 中定義 (C99)。

常見新手語法錯誤速查

錯誤代碼問題修正
if a > b缺括號if (a > b)
for i=0; i<10; i++缺括號for (int i=0; i<10; ++i)
int a = 1, b = 2; if (a=b) ...賦值而非比較if (a == b)
scanf("%d", a)缺取址符scanf("%d", &a)
void main()非標準返回類型int main(void)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved