我来问个位运算符<<的问题 例如x=5,二进制为0101x<<2后,x为多少呢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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位,再翻倍,依此类推。 }} <<是特定于哪些值类型的?泛型上能重载嘛?这回没接口了啊,空军^_ http://msdn.microsoft.com/zh-cn/library/a1sway8w.aspxC# 语言参考<< 运算符(C# 参考)左移运算符 (<<) 将第一个操作数向左移动第二个操作数指定的位数。第二个操作数的类型必须是 int。备注 如果第一个操作数是 int 或 uint(32 位数),则移位数由第二个操作数的低 5 位给出。如果第一个操作数是 long 或 ulong(64 位数),则移位数由第二个操作数的低 6 位给出。第一个操作数的高序位被放弃,低序空位用 0 填充。移位操作从不导致溢出。用户定义的类型可重载 << 运算符(请参见 operator);第一个操作数的类型必须为用户定义的类型,第二个操作数的类型必须为 <<。重载二元运算符时,也会隐式重载相应的赋值运算符(如果有)。 Microsoft 的网站上有个小错误,上面最后一段的第二个 << 要改为 int:用户定义的类型可重载 < < 运算符(请参见 operator);第一个操作数的类型必须为用户定义的类型,第二个操作数的类型必须为 int 。重载二元运算符时,也会隐式重载相应的赋值运算符(如果有)。 为什么说显式转换重载重要因为C#是单继承的,如果遇到有两个类A(AS,AB)B(BS,AB)有发挥余地了,可以进行自定义的转换.(虽然接口也可以,但是你想想看,接口的继承关系是扁平的,而类是垂直的)如果支持多态,就无需这么麻烦了. C++语言就重载了 <<、>> 作为输入输出使用,如:int x;cin >> x;cout << "x = " << x << endl; 如何根据条件编译相应的资源文件? 如何获得边缘坐标? 系统登录后获取用户名的问题 C#.net中listview添加第二列中的内容 求解探讨:隐藏窗体的操作[乱顶勿进] 巨大问题 窗体之间同步更新问题 不会做,很痛苦,新手都这样吗? 怎么写俄罗斯方块,学习了多年的java,写不出俄罗斯方块,感觉自己还不会写程序。最多出400分 如何用C#编写DLL,在VB中调用 谁知道有什么WPF美化界面的控件吗? 紧急,要求啊,我还不会,请高人帮忙,日后定当也会帮到你。。 C#如何监控windows用户对文件的修改?
{
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位,再翻倍,依此类推。
}
}
空军^_
<< 运算符(C# 参考)
左移运算符 (<<) 将第一个操作数向左移动第二个操作数指定的位数。第二个操作数的类型必须是 int。备注 如果第一个操作数是 int 或 uint(32 位数),则移位数由第二个操作数的低 5 位给出。如果第一个操作数是 long 或 ulong(64 位数),则移位数由第二个操作数的低 6 位给出。第一个操作数的高序位被放弃,低序空位用 0 填充。移位操作从不导致溢出。用户定义的类型可重载 << 运算符(请参见 operator);第一个操作数的类型必须为用户定义的类型,第二个操作数的类型必须为 <<。重载二元运算符时,也会隐式重载相应的赋值运算符(如果有)。
如果遇到有两个类
A(AS,AB)
B(BS,AB)
有发挥余地了,
可以进行自定义的转换.
(虽然接口也可以,但是你想想看,接口的继承关系是扁平的,而类是垂直的)
如果支持多态,就无需这么麻烦了.
cin >> x;
cout << "x = " << x << endl;