为什么C++没有~=和!=运算符?

4

这基本上就是标题所描述的:

为什么C++没有~=和!=运算符?

它们偶尔会很有用,特别是在探索重载可能性时。

而替代的a = ~aa = !a表达方式过于冗长。


10
C++已经有!=,但我认为它的含义不是你想象的那样。 - Mad Physicist
3
如果有=~运算符,那么a = ~a应该如何拼写? - SergeyA
2
@SergeyA。运算符将是〜= ,这不会引起歧义。 - Mad Physicist
4
“a ~= a”比“a = ~a”更简洁吗?您能澄清一下您提出的语法吗? - emlai
2
@tuple_cat 我认为这不是 Chump 所询问的。类似的形式应该是 ~=a,作为 a = ~a 的简写。为了更好地展示减少冗长的效果:~=long_variable_name_here 相对于 long_variable_name_here = ~long_variable_name_here - eerorika
显示剩余12条评论
1个回答

20

@视为“通用”运算符,类似于

a @= b

是......的简写

a = a @ b

所以您可以看到,@=形式适用于相应的需要两个操作数的二元运算符。

但是!~一元运算符。因此!=~=将偏离这一点。@在表示一元运算符时等同于@==@,这是不必要的冗余。您对冗长的主张是错误的。


3
因为那并没有更加简洁,只是重新排列了顺序。 - Ignacio Vazquez-Abrams
5
@MadPhysicist,您如何区分a != a的一元运算符和二元运算符? - 463035818_is_not_a_number
4
@MadPhysicist,这有什么意义吗?你只是交换了两个字符。看到a $= a,我会预期a被计算两次,因此在这里并没有任何好处。 - chris
@user2079303 这当然是一个修辞问题,某种程度上它可以通过某种方式实现,但我们都认为没有必要使用复合一元运算符... - 463035818_is_not_a_number
2
此外,如果 a @= a 也是 一元 @ 的简写,那么 +=-= 也会有问题,因为它们既可以是一元的,也可以是二元的。(严格来说,* 也是一元的,但是一元 * 是指针/迭代器解引用) - MSalters
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接