Re: [問題] 請問bit運算~使用的問題

看板C_and_CPP作者 (快樂一點嘛~)時間12年前 (2012/08/28 18:49), 編輯推噓0(008)
留言8則, 2人參與, 最新討論串2/2 (看更多)
想請問各位,還是有地方想不通 if(~0==0xFFFFFFFF) {進的來} if(~0>0xFFFFFFFF) {進不來} #if ~0==0xFFFFFFFF //進不來 #endif #if ~0>0xFFFFFFFF //進的來 #endif 這是怎麼回事呢? ※ 引述《shygo (快樂一點嘛~)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : C語言@ VC 6.0 WinXP 32bit : 想請問 : 1. : if(1<~0x00000000) 和 if(1<~(~0xFFFFFFFF)) 竟然是完全不一樣的結果? : 2. : (~0>>1) != (0xFFFFFFFF>>1) 竟然是成立的? : 為什麼呢? 先謝謝各位~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.250.208.98

08/29 08:59, , 1F
條件編譯的常數似乎是以64位元處理的
08/29 08:59, 1F

08/29 08:59, , 2F
#if ~0==0xFFFFFFFFFFFFFFFF <-試試看能不能進吧
08/29 08:59, 2F

08/29 09:01, , 3F
不過我不了解這東西實務上有什麼用@@"
08/29 09:01, 3F

08/29 11:36, , 4F
我想請問如果是64bit,#if(~0>0x100000000)為什麼進不去
08/29 11:36, 4F

08/29 11:44, , 5F
interview筆試考題有考過類似的,我不會寫>.<
08/29 11:44, 5F

08/29 12:55, , 6F
0x10000000沒超過64bit最大正整數,會當作signed來處理
08/29 12:55, 6F

08/29 12:56, , 7F
~0是十進位,型態為signed時是-1...
08/29 12:56, 7F

08/29 12:59, , 8F
如果這種題目沒有實用價值,就不應該拿來當題目吧@@"
08/29 12:59, 8F
文章代碼(AID): #1GFHBBEr (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1GFHBBEr (C_and_CPP)