我无法理解c#中的这段代码
int i=4
int[] s =new int [1<<i];
Console.WriteLine(s.length);
Run Code Online (Sandbox Code Playgroud)
输出是16我不知道为什么输出那样?
从文档
如果第一个操作数是int或uint(32位数量),则移位计数由第二个操作数的低位5位给出.
如果第一个操作数是long或ulong(64位数量),则移位计数由第二个操作数的低位6位给出.
注意,i << 1和i << 33给出相同的结果,因为1和33具有相同的低阶5位.
这与2 ^(低5位的实际值)相同.
所以在你的情况下它将是2 ^ 4 = 16.
| 归档时间: |
|
| 查看次数: |
433 次 |
| 最近记录: |