所以我有這個代碼輝煌行,我正好有一個錯字:編譯器不會抱怨錯誤的語法
for(int x=firstKey; x <- runner->numKeys; x++){...}
不僅沒有順利編譯而且程序鏈接,並沒有跑一個問題。
當然for循環沒有運行一次。但我不明白什麼<-
被解釋爲?這是如何合法的?
所以我有這個代碼輝煌行,我正好有一個錯字:編譯器不會抱怨錯誤的語法
for(int x=firstKey; x <- runner->numKeys; x++){...}
不僅沒有順利編譯而且程序鏈接,並沒有跑一個問題。
當然for循環沒有運行一次。但我不明白什麼<-
被解釋爲?這是如何合法的?
它被這樣解釋的:
for(int x = firstKey; x < -runner->numKeys; x++)
空白在C.例外大多微不足道包括您不能添加空格內令牌像<=
或::
。但是令牌之間的空間通常是允許的,並且大部分時間也允許刪除令牌之間的空間。
現在我明白了,謝謝!另外,這是C. – codehitman 2015-02-10 05:10:09
其實,這不是錯語法,這是完全有效語法,是語句:
if (a = 7) doSomething(); // will set a to 7 and call doSomething().
b == 42; // won't set b to 42 at all.
你有什麼是語義問題,而不是語法之一。 意思是,而不是結構,是不正確的。
表達:
x <- runner->numKeys
被解釋爲:
x < (-runner->numKeys)
換句話說,循環將只要x
小於鍵的數量的否定運行。由於鍵的數量很可能是正數(儘管有一個零邊的情況需要考慮),否定將是負數,因此如果第一個鍵是非負數,則主體將永遠不會運行。
在任何情況下,邊緣情況都是不相關的,因爲行爲仍然是不正確的,只是以不同的方式。我收集你可能的意思是之一:
x <= runner->numKeys
x < runner->numKeys
這就是元減運算符。 – 2015-02-10 05:07:05