我想知道如何組合邏輯運算符是多麼昂貴?結合它們的最佳方式是什麼?結合邏輯運算符C
例如: 以下兩條語句在優化方面有什麼區別?
1) if((!x || !y || !z) && (a != b))
2) if(!(x && y && z) && (a != b))
我聽到同行說你應該比ORing操作更頻繁地使用AND操作。我是C語言的新手。請有人幫我理解這一點。任何材料或鏈接也會有所幫助。
我想知道如何組合邏輯運算符是多麼昂貴?結合它們的最佳方式是什麼?結合邏輯運算符C
例如: 以下兩條語句在優化方面有什麼區別?
1) if((!x || !y || !z) && (a != b))
2) if(!(x && y && z) && (a != b))
我聽到同行說你應該比ORing操作更頻繁地使用AND操作。我是C語言的新手。請有人幫我理解這一點。任何材料或鏈接也會有所幫助。
只需將其留給編譯器即可。這在優化這些東西時可能更有效率。 – alk
根據德摩根定律,它們是相同的。 – haccks
請注意C語言中用於評估條件表達式的[短路]規則(https://en.wikipedia.org/wiki/Short-circuit_evaluation)。如果可以在不評估其他表達式的情況下知道整個條件語句,則它們是跳過。所以要小心你可能會發生的任何副作用,但不要(可能是值改變或函數調用)。直接的答案是以最簡單明瞭的方式寫出條件:明年你會看到它。 –