首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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可见。这种双字母替代标记有时被称为“有向图”。

Primary

Alternative

&&

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)是在识别注释和字符串文本之前解析。,而每一个三角图的外观都被相应的主字符所取代:

Primary

Trigraph

{

??<

}

??>

[

??(

]

??)

??=

\

??/

^

??'

|

??!

~

??-

因为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...

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

二次

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

二次

另见

C替代操作符表示的文档

*。

代码语言:txt
复制
 © cppreference.com

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

扫码关注腾讯云开发者

领取腾讯云代金券