'<< ='运算符做什么以及它叫什么?

时间:2012-05-19 13:44:12

标签: c++

  dy <<= 1;
  dx <<= 1;

这是我找到的一些C ++代码,它对变量做了什么,以及该运算符调用了什么?

3 个答案:

答案 0 :(得分:5)

dydx向左移1位。

它相当于(除非dy和dx有operator =&lt;&lt;重载)

dy = dy << 1;
dx = dx << 1;

如果dxdy是整数类型,则相当于乘以2。

请注意,左移一个负数是未定义的行为。

程序员认为这比仅乘以2更有效率(这不是,但它的可读性差得多),这是一个丑陋的黑客攻击。

答案 1 :(得分:0)

此操作称为位移 - 通过添加零,将dy和dx的二进制表示向左移动一个符号。基本上结果是dx和dy乘以2(除非发生溢出)。

答案 2 :(得分:0)

它是bitshift运算符。您可以使用指定的移位量以一种方式或另一种方式移位位。

您发布的代码与以下内容相同:

dx = dx << 1dy = dy << 1