Meh*_*ari 19
ulong mixed = (ulong)high << 32 | low;
Run Code Online (Sandbox Code Playgroud)
演员阵容非常重要.如果省略了强制转换,考虑到high
类型uint
(32位)这一事实,您将向32位左移32位值.32位变量的移位运算符将使用right-hand-side
mod 32的移位运算uint
.实际上,向左移位32位是无操作.铸造以ulong
防止这种情况.
验证这个事实很容易:
uint test = 1u;
Console.WriteLine(test << 32); // prints 1
Console.WriteLine((ulong)test << 32); // prints (ulong)uint.MaxValue + 1
Run Code Online (Sandbox Code Playgroud)