語法和語義錯誤!
阿新 • • 發佈:2019-01-23
語法和語義錯誤
程式設計是很困難的,而且有很多辦法犯錯誤。誤差一般可分為兩類:語法錯誤和語義錯誤(邏輯錯誤)。
幸運的是,編譯器一般會趕上的語法錯誤,並生成警告或錯誤,讓您輕鬆識別並解決問題。然後,它再編譯,直到您擺脫所有的錯誤,只是早晚的問題。
一旦你的程式被編譯正確,得到它實際產生的結果(S)你想可能會非常棘手。發生語義錯誤時的宣告在語法上是有效的,但沒有做程式設計師的意圖。
有時,這些會導致你的程式崩潰,如除以零的情況下:
程式設計是很困難的,而且有很多辦法犯錯誤。誤差一般可分為兩類:語法錯誤和語義錯誤(邏輯錯誤)。
當你寫一份宣告,根據C ++語言的語法無效時發生語法錯誤。這包括錯誤,如缺少分號,未宣告的變數,不匹配的括號或大括號,和未終止字串。例如,下面的程式中包含相當多的語法錯誤:
1 2 3 4 5 6 7 #include <iostream>; // preprocessor statements can't have a semicolon on the end int main() { std:cout < "Hi there; << x; // invalid operator (:), unterminated string (missing "), and undeclared variable return 0 // missing semicolon at end of statement }
幸運的是,編譯器一般會趕上的語法錯誤,並生成警告或錯誤,讓您輕鬆識別並解決問題。然後,它再編譯,直到您擺脫所有的錯誤,只是早晚的問題。
一旦你的程式被編譯正確,得到它實際產生的結果(S)你想可能會非常棘手。發生語義錯誤時的宣告在語法上是有效的,但沒有做程式設計師的意圖。
有時,這些會導致你的程式崩潰,如除以零的情況下:
1 2 3 4 5 6 7 8 9 #include <iostream> int main() { int a = 10; int b = 0; std::cout << a << " / " << b << " = " << a / b; // division by 0 is undefined return 0; }