考虑这些替代运算符表示:(取自here)
Primary Alternative
&& and
&= and_eq
& bitand
| bitor
~ compl
! not
!= not_eq
|| or
|= or_eq
^ xor
^= xor_eq
为什么存在这些替代运算符表示?我喜欢他们,但我想找个理由让我的经理允许我使用它们。
答案 0 :(得分:12)
正如tomislav-maric在评论中指出的那样,原因正是如此 在您引用的页面上给出的:一些较旧的广泛编码 不包含被替换的字符。这是 今天可能不太相关,因为那些编码有 几乎消失了,被一些ISO 8859取代 编码或UTF-8。我不认为你可以用这个作为 你的经理的论点。
另一方面,至少有一些C ++专家更喜欢and
,or
以及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
使用替代运算符||
来解决问题。