[問題] if中判斷多個條件出現warning

看板C_and_CPP作者時間14年前 (2011/03/01 14:02), 編輯推噓1(108)
留言9則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 我希望在程式中判斷一個2-byte陣列內存的值是否與我預期相同,所以程式中出現下列 的判斷式: char Array[2]; if( (Array[0]==0x00) && (Array[1]==0xFF) ) { ... } 編譯器會報出下列warning: comparison is always false due to limited range of data type. 我不太明白limited range of data type的涵意,請問它是在警告什麼樣的情況 會讓判斷值永遠為false呢?還是這樣的用法並不合理或是有瑕疵呢? 餵入的資料(Input): 沒有 預期的正確結果(Expected Output): 沒有warning跟error。 錯誤結果(Wrong Output): warning: comparison is always false due to limited range of data type. 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): 無 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.67.181.135 ※ 編輯: icetofux 來自: 203.67.181.135 (03/01 14:04)

03/01 14:09, , 1F
char範圍是-128~127 一定不會等於255
03/01 14:09, 1F

03/01 14:11, , 2F
請問一下Array內的值是用ofstream.read讀出的,型態是
03/01 14:11, 2F

03/01 14:12, , 3F
char,如果我想以0x00~0xFF來做比較,是否改成:
03/01 14:12, 3F

03/01 14:13, , 4F
(unsigned char)Array[n]即可?
03/01 14:13, 4F

03/01 15:19, , 5F
char 其實在標準沒規定要 signed 或 unsigned
03/01 15:19, 5F

03/01 23:32, , 6F
看不太懂你Array裡面存什麼樣的資料..
03/01 23:32, 6F

03/02 10:17, , 7F
這個程式主要是用來做程式的機械碼分析,該程式機械碼一
03/02 10:17, 7F

03/02 10:18, , 8F
個為16 bits,所以我用char Array[2]來儲存,用ifstream
03/02 10:18, 8F

03/02 10:18, , 9F
來讀取,並且經過if判斷來還原成原來的asm指令。
03/02 10:18, 9F
文章代碼(AID): #1DR8mFGP (C_and_CPP)