當編寫程式時,幾乎是不可避免的,你會犯錯誤。在這一節中,我們將討論所做的不同的錯誤,以及它們是如何處理的。
錯誤分為兩大類:語法和語義錯誤。
語法錯誤
語法錯誤發生時,你寫了乙個宣告針對c++語言的語法無效。例如:
如果5不等於6,則寫「不等於」;
雖然這種說法是可以理解的人類,它是無效的根據c++的語法。正確的c++語句會:
1
2if (5 != 6)
std::cout << "not equal";
語法錯誤幾乎總是由編譯器捕獲,通常很容易修復。因此,我們通常不擔心他們太多。
語義錯誤
語義錯誤發生時,語句在語法上是有效的,但不做程式設計師想要的。例如:
2
for (int count=0; count <= 3; ++count)
std::cout << count << " ";
程式設計師可能已經打算這一宣告,以列印1 2 0,但它實際上是列印1 2 3 0。
語義錯誤不是由編譯器捕獲的,它可以有任意數量的影響:它們可能不顯示在所有,導致程式產生錯誤的輸出,導致不穩定的行為,損壞的資料,或導致程式崩潰。
它在很大程度上是我們所關心的語義錯誤。
語義錯誤可以發生在許多方面。最常見的語義錯誤之一是乙個邏輯錯誤。當程式設計師錯誤地對乙個語句的邏輯進行編碼時,出現了乙個邏輯錯誤。上面的語句示例是乙個邏輯錯誤。這裡是另乙個例子:
提交form時報「無效的語法」
專案中出現如下問題 ie6中submit.click 方式提交form不成功,但是在高版本的ie中提交沒有問題。讓我非常的費解。後來查詢資料後發現了乙個啟發,如果form中method沒有定義,則自動按照method get 方式提交form,但這種方 式提交form,長度限制在256。回想一下,自...
它是靈活的和安全的。
按值傳遞 預設情況下,按值傳遞的引數在c 當按值傳遞的引數,乙個引數被傳遞到函式的副本。考慮下面的 片段 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 voidfoo inty intmain 在第一次呼叫foo 的引數是文字5。呼叫foo 時,建立變數y,5是複製到...
C 中WinForm的TopMost無效的解決辦法
今天要寫乙個簡單的螢幕尺子,需要在最上層,結果發現topmost無論如何都不起作用了 查了下,各種辦法試盡,最後還是不好用 沒辦法,以前寫mfc的時候,要把視窗置為最頂層,是用setwindowpos系統api的,在c 中這招還靈麼 匯入函式後,一試,果然有效 有時候,治怪病還得靠api啊 1.先要...