例如,如果我在C#控制台应用程序中编写Console.WriteLine(1<<2<<2+1);
,则输出将为32
答案 0 :(得分:3)
来自MSDN:
左移运算符(&lt;&lt;)将其第一个操作数向左移动由其第二个操作数指定的位数。第二个操作数的类型必须是int或具有到int的预定义隐式数字转换的类型。
https://msdn.microsoft.com/en-us/library/a1sway8w.aspx
在这种情况下返回数字32,因为加法运算符优先于ASHL(&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&quot;运算符),但是最左边的ASHL运算符首先被应用。表达式评估如下:
1<<2<<2+1
((1<<2)<<(2+1))
((1<<2)<<3)
(4<<3)
32