[問題] 移位運算與預期不符

作者: jai23012 (jai23)   2018-07-23 07:01:15
由片語學習C程式設計的習題
題目如連結:https://judgegirl.csie.org/problem/0/222
我的程式碼連結:http://codepad.org/cE1fx1z1
我的問題是
第20行,當i == 7時,我預期~lld_zero << ((i + 1) * 8)64個bit應該都是0,
但實際上64個bit都是1,為什麼?
作者: kmap ( )   2018-07-23 09:08:00
gcc warning: left shift count >= width of type根據標準 是undefined behavior
作者: tinlans ( )   2018-07-24 05:52:00
其實上過計組的話就會知道 shifter 的構成方式了,它並非是從暫存器讀出一個數字 N,然後把 shift 拿來反覆做 N次,但是一般人會以為是這樣,才會想說就算標準講未定義實際上也只是 loop 次數超過而已,怎麼可能不如預期。結果實際跑出來都會被打臉,其實標準之所以那樣定,背後都有它的意義存在。
作者: alan23273850   2018-07-28 11:01:00
如果shift 63次結果為何,用unsigned結果為何求tin大解釋計組

Links booklink

Contact Us: admin [ a t ] ucptt.com