标签: c# bitwise-operators bit-shift
我很困惑为什么它会在C#中产生#ifdef,我期望它会产生0xffffffff。表达式的类型为0x0。
#ifdef
0xffffffff
0x0
uint
答案 0 :(得分:3)
按照documentation:
如果第一个操作数是int或uint(32位数量),则移位 计数由第二个操作数的低五位给出 (第二个操作数和0x1f)。
第二个操作数为32。32 & 0x1f为0。因此,>> 32等效于“将其移位0位”,因此“什么也不做”。
32 & 0x1f
>> 32