[问题] 移位运算与预期不符

楼主: 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