我有一個小樣本函數:如何強制類型轉換文字用C
#define VALUE 0
int test(unsigned char x) {
if (x>=VALUE)
return 0;
else
return 1;
}
我的編譯器警告我說的比較(X> = VALUE)在所有情況下是真實的,哪些是對的,因爲X是一個無符號的字符和值與值0定義所以我改變了我的代碼:
if (((signed int) x) >= ((signed int) VALUE))
但警告再來。我測試了三個GCC版本(所有版本> 4.0,有時您必須啓用-Wextra)。
在改變的情況下,我有這個明確的轉換,它應該是一個有符號的int比較。爲什麼它聲稱比較總是正確的?
那麼,你想完成什麼?你想在什麼條件下返回1而不是0? – 2009-09-01 13:21:54
我的意圖是擺脫這個警告。 – 2009-09-01 13:31:10
不要擺脫這個警告,試圖擺脫你需要知道一個無符號是否大於等於0.它總是 - 這就是編譯器告訴你的。 – xtofl 2009-09-01 13:35:25