[問題] uint16_t compare

看板C_and_CPP (C/C++)作者 (路人)時間13年前 (2013/02/08 10:09), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) NONE 問題(Question): 數值比較錯誤 餵入的資料(Input): 0x1000 預期的正確結果(Expected Output): vlan_vid=present 錯誤結果(Wrong Output): vlan_vid=0x1000 none=0x0 present=0x1000 程式碼(Code):(請善用置底文網頁, 記得排版) if ((uint16_t) *f->value == OFPVID_NONE) fprintf(stream, "vlan_vid= none vid=0x%x none=0x%x present=0x%x", *((uint16_t*) f->value),OFPVID_NONE,OFPVID_PRESENT); else if ((uint16_t) *f->value == OFPVID_PRESENT) fprintf(stream, "vlan_vid= present"); 補充說明(Supplement): 其他資料都正常 只有這筆資料有問題... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.245.178

02/08 10:17, , 1F
先確定 OFPVID_NONE 跟 OFPVID_PRESENT 是不是一樣..(?)
02/08 10:17, 1F

02/08 10:19, , 2F
然後看轉型跟長度有沒有問題(?)
02/08 10:19, 2F

02/08 10:23, , 3F
為什麼判斷式跟底下印出來的值 一個有多一層*一個沒有..
02/08 10:23, 3F

02/08 10:36, , 4F
已找到BUG點 以解決 SORRY
02/08 10:36, 4F
文章代碼(AID): #1H55vKxU (C_and_CPP)
文章代碼(AID): #1H55vKxU (C_and_CPP)