作者icetofux ()
看板C_and_CPP
標題[問題] if中判斷多個條件出現warning
時間Tue Mar 1 14:02:53 2011
開發平台(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