什么"<<" C#中的运算符意味着

时间:2015-06-24 15:38:31

标签: c#

例如,如果我在C#控制台应用程序中编写Console.WriteLine(1<<2<<2+1);,则输出将为32

你能告诉我为什么吗?这是什么&#34;&lt;&lt;&#;运营商意味着 我在哪里可以阅读更多相关信息?我谷歌但无法找到它

1 个答案:

答案 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