我只是寫了下面的代碼行:正確使用
if (++(data_ptr->count) > threshold) { /*...*/ } // example 1
我的意圖是遞增的數據結構中的count
變量data_ptr
點然後再與threshold
進行比較,並且這一行代碼有效。
如果我不是想在進行比較之前增加data_ptr
,我會寫這樣的:
if ((++data_ptr)->count > threshold) { /*...*/ } // example 2
出於好奇,我也試了這行代碼:
if (++data_ptr->count > threshold) { /*...*/ } // example 3
而且發現它的行爲與第一個完全相同。
第一個問題:爲什麼沒有示例#3的工作方式與示例#1相同?這是運營商優先的問題嗎?標準中的東西?我不得不寫一個快速測試程序,因爲答案對我來說並不明顯。
第二個問題:我應該用不同的方式寫這個if
陳述嗎?我可以先在自己的行上執行增量,然後測試條件以避免任何可能的混淆。這是必要的,還是前兩個例子自己顯而易見?
1簡潔。 '' –