編譯原理——動態語義錯誤與靜態語義錯誤


  動態語義錯誤:    邏輯上的錯誤,比如死循環等,編譯器在編譯的時候並未發現,但邏輯上這是個錯誤;

  靜態語義錯誤: 可被編譯器發現的語法錯誤,比如 (5+6(); 這種在編譯器編譯的時候就會被發現的語法錯誤;

  

#include<iostream>

using namespace std; int main() { int k = 0; for(; k<=100; ); { k++; } }

  上述代碼中,for 循環后面有個;號, 所以這個for循環是死循環,存在語義錯誤,在編譯的時候是不會報錯的,所以是動態語義錯誤。在C/C++中,直接寫{ }用於產生獨立的作用域,編譯可以通過,符合詞法、語法、靜態語義。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM