为什么存在这些替代运算符表示

时间:2014-02-14 11:45:11

标签: c++

考虑这些替代运算符表示:(取自here

Primary Alternative
&&      and
&=      and_eq
&       bitand
|       bitor
~       compl
!       not
!=      not_eq
||      or
|=      or_eq
^       xor
^=      xor_eq

为什么存在这些替代运算符表示?我喜欢他们,但我想找个理由让我的经理允许我使用它们。

2 个答案:

答案 0 :(得分:12)

正如tomislav-maric在评论中指出的那样,原因正是如此 在您引用的页面上给出的:一些较旧的广泛编码 不包含被替换的字符。这是 今天可能不太相关,因为那些编码有 几乎消失了,被一些ISO 8859取代 编码或UTF-8。我不认为你可以用这个作为 你的经理的论点。

另一方面,至少有一些C ++专家更喜欢andor 以及not&&||!。我不是其中之一,而是那里 无论如何都是争论。我的感觉就是它的C / C ++, 还有很多奇怪的字符序列统治。 (如果我 然而,从头开始设计语言......)

关于页面下方的三字母:可以 被认为是一个没有真正起作用的实验。据,直到...为止 我知道,没有人真正使用它们;结果代码会 和替换角色一样难以理解 用过的。如果您使用的是德语,请考虑其他选择 ISO 646:

int arrayÄ 10 Ü;      //  native
int array??( 10 ??);  //  tri-graphs
int array<: 10 :>;    //  digraph

只有最后一点甚至可以略读,但到时候了 最后一个被指定,问题几乎消失了。

编辑:

还有一点。无论个人喜好如何,你 应该做出and / or / not&& / || / !的决定{ 团队级别,团队中的每个人都应该使用相同的 约定。

编辑:

FWIW:三元曲线首先在C90中引入(K&amp; R C没有 他们); C ++ 98和C99中的有向图和备用标记。 (我不是 确定是否支持早期版本的CFront 他们与否。)

答案 1 :(得分:6)

C委员会解释了为什么C在 C99 Rationale iso646.h中引入了这些替代运算符,我认为它也可以用于C ++,因为C ++从C继承它们。

简而言之,C语言中引入了有向图和三字符来解决在旧的EBCDIC机器中使用C的问题(仅部分支持ASCII,因此一些缺少的ASCII令牌需要用EBCDIC字符表示)。虽然替代运算符用于将二层图和三字图的使用保持在最低限度。

  

Rationale for International Standard — Programming Languages — C§MSE.4支持不变的ISO / IEC 646

     

添加的有向图有意保持在最低限度。在可能的情况下,委员会   而是以新的宏中定义的宏的形式为运算符提供备用拼写   标题<iso646.h>。为预处理运算符###提供了替代拼写,因为它们不能被宏名称替换。还为此提供了有向图   标点符号[]{},因为宏名称被证明是一种不太可读的替代品。委员会认识到这个标题中提供的解决方案是不完整的,涉及多种方法,但仍然相信它可以帮助使标准C程序更具可读性。

例如,字符|不在旧计算机中,因此使用三字组??!来表示它,但这会使代码难以阅读||是用过的。 C通过让代替or使用替代运算符||来解决问题。