我在這個問題上看到了很多問題,但我仍然無法弄清楚以下是語義還是邏輯錯誤。
說我有下面的Java代碼:語義或邏輯錯誤?
boolean a = false;
if (a = false) System.out.println("yes");
else System.out.println("no");
你可能已經看到我大概想寫下來==
代替=
,而是:在程序編譯就好了,並沒有錯誤運行。但是,它確實沒有給我預期的結果。
我在某處發現語義錯誤總是給出一個錯誤(在編譯或運行時),所以這肯定是一個邏輯錯誤。然而,另一篇文章說,語義錯誤並不總是給出錯誤。因此問題是:上述示例是否包含語義或邏輯錯誤?
這兩件事不是一回事嗎?在我讀到的關於這些術語的每一處,似乎兩者的定義都是程序在語法上是有效的(即它是一個有效的程序),但它並沒有做到程序員所期望的。 –
@ LasseV.Karlsen我首先想到了同樣的事情,但事實並非如此。另外,例如,如果'a'是'String',這將被視爲語義錯誤。 – SWdV
@ LasseV.Karlsen(據我所知,這是因爲_pattern_是正確的,雖然情況(變量類型)不是) – SWdV