敘述 a
cpp
Copy code
m = i + n; /* 敘述 a */
這行代碼本身在語法上是正確的。然而,n 在使用前沒有被初始化,這在運行時可能會導致不確定的行為或值,但在編譯時不會產生錯誤訊息。
敘述 b
cpp
Copy code
n = j * k; /* 敘述 b */
這行代碼中引用了未聲明的變量 k。這將導致編譯錯誤,錯誤訊息可能是 "undeclared identifier" 或 "k was not declared in this scope"。
敘述 c
cpp
Copy code
i + j = z; /* 敘述 c */
這行代碼試圖將一個值賦給一個表達式,這是不合法的。在 C++ 中,賦值運算符的左側必須是一個可修改的左值。此外,z 也沒有被聲明。這將導致編譯錯誤,錯誤訊息可能是 "lvalue required as left operand of assignment" 和 "undeclared identifier 'z'"。
敘述 d
cpp
Copy code
a[i] = a[j] - j; /* 敘述 d */
這行代碼在語法上是正確的。它將 a[j] - j 的結果賦值給 a[i]。假設 i 和 j 的值都在數組 a 的有效索引範圍內,這段代碼沒有問題。
敘述 e
cpp
Copy code
a[t] = i * j; /* 敘述 e */
這行代碼嘗試使用一個 float 類型的變量 t 作為數組索引,這是不合法的。在 C++ 中,數組的索引必須是整型。這將導致編譯錯誤,錯誤訊息可能是 "array subscript is not an integer"。
總結:
敘述 a:文法正確(但 n 應該初始化)
敘述 b:錯誤訊息關於未聲明的變量 k
敘述 c:錯誤訊息關於非法賦值和未聲明的變量 z
敘述 d:文法正確
敘述 e:錯誤訊息關於使用非整數類型的數組索引