Android SDK(API級別8)中似乎沒有max()
函數。 我錯了嗎?Android NDK中缺少「max(a,b)」
要求:
r = max(0, r-1);
我不願意使用三元運算符,因爲它的時間關鍵 ,我不能肯定,編譯器將使用寄存器適當 (以避免重新計算R-1) 。
Android SDK(API級別8)中似乎沒有max()
函數。 我錯了嗎?Android NDK中缺少「max(a,b)」
要求:
r = max(0, r-1);
我不願意使用三元運算符,因爲它的時間關鍵 ,我不能肯定,編譯器將使用寄存器適當 (以避免重新計算R-1) 。
爲什麼不直接寫if (r < 1) r = 0; else r -= 1;
?這需要儘可能少的操作。
如果你有原子性的要求,我想你會有點困難,並使用臨時。
只需添加'else r - ;' – phlogratos
@phlogratos:謝謝,修正! –
謝謝你Kerrek,一個優雅的解決方案。不確定它有助於更複雜的a和b,即表達式,但是一個很好的建議。 – byromaniac
如果你用C的時候,爲什麼不直接使用宏:
的#define MAX(A,B)(((A)>(B))? (a):(b))
r = MAX(0,r-1);
它可能有反正(它在GCC)
嗨,Brian,因爲我擔心如果b是表達式,它將被評估兩次。 – byromaniac
我知道這是一個老帖子,但在NDK,經R 7b我能夠將其更改爲MAX編譯最大。希望這有助於某人 -
我真的不明白。你在標題中提到了NDK,但是在你提到SDK的問題上。你可以解釋嗎? – Macarse
嗨Macarse,這是C代碼,而不是Java。 – byromaniac