c#uint右移移位意外结果

时间:2018-12-07 12:14:12

标签: c# bitwise-operators bit-shift

我很困惑为什么它会在C#中产生#ifdef,我期望它会产生0xffffffff。表达式的类型为0x0

uint

1 个答案:

答案 0 :(得分:3)

按照documentation

  

如果第一个操作数是int或uint(32位数量),则移位   计数由第二个操作数的低五位给出   (第二个操作数和0x1f)。

第二个操作数为32。32 & 0x1f为0。因此,>> 32等效于“将其移位0位”,因此“什么也不做”。