| =运算符在C++中的含义是什么?| =运算符在C++中的含义是什么?
回答
假设你使用内置运营商的整数或用户定义的类三立重载运营商,这些是相同的:
a = a | b;
a |= b;
的“|=
”符号是按位OR赋值运算符。它计算OR与RHS('b')与LHS('a')的价值,并将结果赋予'a',但它只会在评估'a'时这样做。
中的一大好处 '| =' 运算符时 '一个' 本身就是一个复杂的表达式:
something[i].array[j]->bitfield |= 23;
VS:
something[i].array[i]->bitfield = something[i].array[j]->bitfield | 23;
是差有意或无意?
...
答:故意 - 显示速记表达的优势......第一个复杂的表达式实际上等同于:
something[i].array[j]->bitfield = something[i].array[j]->bitfield | 23;
类似的说明适用到所有复合赋值运算符:
+= -= *= /= %=
&= |= ^=
<<= >>=
任何复合运算符exp ression:
a XX= b
等同于:
a = (a) XX (b);
除了a
被评估一次。请注意这里的括号 - 它显示了分组是如何工作的。
x |= y
一样
x = x | y
一样
x = x [BITWISE OR] y
你可以说C++中的任何运算符。即使它不总是按位进行操作,或者无论如何都要调用操作符。 – ronag 2010-11-18 17:38:29
@Steve - 并不总是添加。 – 2010-11-18 17:39:13
这是按位或compound assignment。
在,你可以写x += y
以同样的方式来表示x = x + y
你可以写x |= y
意味着x = x | y
,其中OR放在一起的x
和y
,然后所有的位,结果放入x
。
要注意的是它可以overloaded,但对于基本类型,你应该确定:-)
您可以尝试使用SymbolHound: the search engine for programmers搜索网站,像这样的符号,如这一点。这里是SymbolHound上的| =的results。 -Tom(联合创始人SH)
非常酷的想法,并感谢您的全面披露:您与SH – Jeff 2012-05-03 17:19:59
- 1. 运算符| =在C#中的含义是什么?
- 2. 运算符'=>'在C#中的含义是什么?
- 3. `#`运算符在Scala中的含义是什么?
- 4. 在ABAP运算符中,=的含义是什么?
- 5. '&'在一个一元运算符中的含义是什么?
- 6. C++ - 什么是运算符。*?
- 7. 运算符优先级和关联性在c#中的含义是什么?
- 8. 什么是C++中的static_case运算符?
- 9. 什么是C#中的“??”运算符?
- 10. asp.net.mvc中@ *运算符的含义是什么?
- 11. Underscore.js中加号运算符的含义是什么?
- 12. 在Ruby中使用::运算符定义方法的含义是什么?
- 13. 模运算符的语义是什么?
- 14. @运算符的意义是什么?
- 15. 这些Java运算符的含义是什么?
- 16. “uint isWidget:1;”中的冒号(:)运算符的含义是什么?在Qt中?
- 17. 什么是重写的C运算符++
- 18. 什么是“?”。运算符在C#中做什么?
- 19. “var”在C#中的含义是什么?
- 20. PLAT_BINARYFORMATTER在C#中的含义是什么?
- 21. C(字符串)在C++中的含义是什么?
- 22. “| =”运算符在C中表示什么?
- 23. **运算符在C中表示什么?
- 24. “| =”运算符在C#中做什么?
- 25. 什么是<=用C++运算符
- 26. 什么是c运算符>>
- 27. 运算符〜>在Scala中的含义?
- 28. “+ +”运算符的含义(不是++)
- 29. 在Python中,“〜〜”运算符是什么?
- 30. 在elixir中什么是=〜运算符
除非操作员重载... – zzzzBov 2010-11-18 17:34:29
虽然一个特别邪恶的类可以实现'| ='来做任何想要的事情。通常,它会以您在此显示的直观方式实现'|'和'| ='。 – 2010-11-18 17:35:42
@zzzzBov:是的 - 在C++中总是有这样的警告;但如果'a'和'b'是整数,那么我认为你是安全的。如果您使用的类重载不可预测,并且不能按预期工作,那么现在是纠正错误或使用不同类的时候了。 – 2010-11-18 17:36:22