與-Wconversion
警告打開桌面上使用GCC,它變得明顯,short
小號獲得在數學運算提升到int
s的數字文字:Clang在與ARM目標上的數字文字結合使用時將短褲整數提升爲整數嗎?
unsigned short i = 10; // Obviously truncates to short immediately
unsigned short j = 30; // Same here
i = j + 2; // Warnings imply j gets promoted to int here, demands cast
在ARM的目標,其中的規則甩一下的是, 「短褲總是比較快」,在幾乎所有的數學運算(特別是包括文字)期間,它們都被提升爲int
s的操作嗎?
如果是這樣,是否有任何理由使用short
s,除非他們讓編譯器幫助您檢查邊界是否合理?我沒有處理大量的短褲,所以存儲空間似乎不是問題(或者是?)。
注意:這是音頻處理,所以我不是爲了它而優化,而且需要考慮這個問題。
「+」運算符將操作數提升爲int(例如,如果它的'char'或leas,則sizeof(int)')。 –
你從哪裏看到關於ARM的「短褲總是更快」?這顯然是胡說八道,因爲每次從32位寄存器中移出時,它們必須被截斷爲16位。 –