看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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)
kaomark:char範圍是-128~127 一定不會等於255 03/01 14:09
icetofux:請問一下Array內的值是用ofstream.read讀出的,型態是 03/01 14:11
icetofux:char,如果我想以0x00~0xFF來做比較,是否改成: 03/01 14:12
icetofux:(unsigned char)Array[n]即可? 03/01 14:13
akasan:char 其實在標準沒規定要 signed 或 unsigned 03/01 15:19
annheilong:看不太懂你Array裡面存什麼樣的資料.. 03/01 23:32
icetofux:這個程式主要是用來做程式的機械碼分析,該程式機械碼一 03/02 10:17
icetofux:個為16 bits,所以我用char Array[2]來儲存,用ifstream 03/02 10:18
icetofux:來讀取,並且經過if判斷來還原成原來的asm指令。 03/02 10:18