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

Dav*_*mes 0 c++

  dy <<= 1;
  dx <<= 1;
Run Code Online (Sandbox Code Playgroud)

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

Luc*_*ore 5

这种转移dydx1位到左侧.

它相当于(除非dy和dx有operator = << overloaded)

dy = dy << 1;
dx = dx << 1;
Run Code Online (Sandbox Code Playgroud)

如果dx并且dy是整数类型,则相当于乘以2.

请注意,左移负数是未定义的行为.

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

  • 它并不总是一个黑客.在很多情况下,你真正在做按位操作,而不是算术.因此,使用按位运算符是很自然的. (3认同)