在线文档教程
C++
语言 | Language

Alternative operator representations

替代算子表示

C++%28和C%29源代码可以用任何非ASCII 7位字符集编写,其中包括ISO 646:1983不变字符集。然而,一些C++操作符和标点符号需要在ISO 646代码集之外的字符:{, }, [, ], #, \, ^, |, ~.在某些或所有这些符号不存在%28的情况下,例如德语,则能够使用字符编码DIN 66003%29,C++定义了由646兼容字符组成的下列备选方案。

替代令牌

对于使用非ISO 646字符的几个操作符和其他标记,还有其他拼写方式。在语言的所有方面,每个可选令牌的行为与其主令牌完全相同,除了拼写%28串化算子可以使拼写%29可见。这种双字母替代标记有时被称为“有向图”。

PrimaryAlternative
&&and
&=and_eq
&bitand
|bitor
~compl
!not
!=not_eq
||or
|=or_eq
^xor
^=xor_eq
{<%
}%>
[<:
]:>
%:
%:%:

When the parser encounters the character sequence <:: and the subsequent character is neither : nor >, the < is treated as a preprocessing token by itself and not as the first character of the alternative token <:. Thus std::vector<::std::string> won't be wrongly treated as std::vector[:std::string>.(since C++11)

注记

人物&!在Iso-646下是不变的,但是对于使用这些字符来容纳更多限制性历史字符集的令牌,提供了其他选项。

没有其他拼写%28,例如eq%29表示相等运算符==因为那个角色=出现在所有支持的字符集中。

与C兼容

在包含文件中用C语言定义了相同的单词<iso646.h>作为宏。因为在C++中,这些都内置在语言中,C++版本的<iso646.h>,以及<ciso646>没有定义任何东西。

图%28直到C++17%29

以下三个字符组%28组(图%29)是在识别注释和字符串文本之前解析。,而每一个三角图的外观都被相应的主字符所取代:

PrimaryTrigraph
{??<
}??>
[??(
]??)
??=
\ ??/
^??'
|??!
~??-

因为trigram被提前处理,所以注释(如// Will the next line be executed?????/将有效地注释掉以下行,字符串文本(如"Enter date ??/??/??"被解析为"Enter date \\??"...

关键词

and,,,and_eq,,,bitand,,,bitor,,,compl,,,not,,,not_eq,,,or,,,or_eq,,,xor,,,xor_eq...

下面的示例演示了几种替代令牌的使用。

二次

%:include <iostream> int main(int argc, char *argv<::>) <% if (argc > 1 and argv<:1:> not_eq NULL) <% std::cout << "Hello, " << argv<:1:> << '\n'; %> %>

二次

另见

C替代操作符表示的文档

*。

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/language/Operator[医]替代