例如x=5,二进制为0101
x<<2后,x为多少呢

解决方案 »

  1.   

    class Program
    {
      static void Main()
      {
        int x = 5;
        int y = x << 2;
        System.Console.WriteLine(x); // 输出:5,x不变
        System.Console.WriteLine(y); // 输出:20,y是x的4倍
        // 左移1位,翻倍,再左移1位,再翻倍,依此类推。 
      }
    }
      

  2.   

    <<是特定于哪些值类型的?泛型上能重载嘛?这回没接口了啊,
    空军^_
      

  3.   

    http://msdn.microsoft.com/zh-cn/library/a1sway8w.aspxC# 语言参考
    << 运算符(C# 参考)
    左移运算符 (<<) 将第一个操作数向左移动第二个操作数指定的位数。第二个操作数的类型必须是 int。备注 如果第一个操作数是 int 或 uint(32 位数),则移位数由第二个操作数的低 5 位给出。如果第一个操作数是 long 或 ulong(64 位数),则移位数由第二个操作数的低 6 位给出。第一个操作数的高序位被放弃,低序空位用 0 填充。移位操作从不导致溢出。用户定义的类型可重载 << 运算符(请参见 operator);第一个操作数的类型必须为用户定义的类型,第二个操作数的类型必须为 <<。重载二元运算符时,也会隐式重载相应的赋值运算符(如果有)。
      

  4.   

    Microsoft 的网站上有个小错误,上面最后一段的第二个 << 要改为 int:用户定义的类型可重载 < < 运算符(请参见 operator);第一个操作数的类型必须为用户定义的类型,第二个操作数的类型必须为 int 。重载二元运算符时,也会隐式重载相应的赋值运算符(如果有)。 
      

  5.   

    为什么说显式转换重载重要因为C#是单继承的,
    如果遇到有两个类
    A(AS,AB)
    B(BS,AB)
    有发挥余地了,
    可以进行自定义的转换.
    (虽然接口也可以,但是你想想看,接口的继承关系是扁平的,而类是垂直的)
    如果支持多态,就无需这么麻烦了.
      

  6.   

    C++语言就重载了 <<、>> 作为输入输出使用,如:int x;
    cin >> x;
    cout << "x = " << x << endl;