C替代标记

C替代标记指一批C语言常见运算符的可选拼写。它们实现为C標準函式庫中iso646.h头文件内的一组定义。此标记作为C90标准的修正案于1995年增补。

替代标记允许程序员使用C语言按位和逻辑，原先的标记在一些国际和非QWERTY键盘上很难输入。根据ISO/IEC 646标准实现的头文件有一些区域性的变化，其中一些用重音字符替换了C运算符使用的标点符号。

 定义 
在iso646.h中定义了11个：

  定义为 and     && and_eq  &= bitand  & bitor   | compl   ~ not     ! not_eq  != or      || or_eq   |= xor     ^ xor_eq  ^=

 C++ 
以上标识符全部是运算符关键字，因此不需要再包含头文件。为了兼容C语言，C++98标准提供了头文件<ciso646>，但实际上这是个空文件。然而在Microsoft Visual C++等编译器中，如果使用这些运算符关键字，就必须包含头文件。

头文件名称来源 
iso646.h的名称来源于意图兼容基于ISO/IEC 646字符集的键盘。ISO 646是1972年颁布的一项国际化的7位ASCII标准，规定了12个字符所对应的码位保持对各国标准开放：# $ @ [ \ ] ^ ` { | } ~  。

因此法国标准AFNOR NF Z 62010-1982把码位0x7c（ASCII码的 | ）定义为ù，用法文键盘就难以输入C语言的位或运算符 | ；码位0x7e（ASCII码的 ~）定义为 ¨ （即分音符），法文键盘就难以输入C语言的位非运算符 ～ 。

加拿大法语标准CSA Z243.4-1985中把码位0x5e（ASCII码的 ^ ）在定义为É，导致难以输入C语言的异或运算符 ^ 。

为解决上述的C语言源代码输入问题，C语言预处理器（C preprocessor）在扫描处理源文件时，使用三字符组替换为单个字符的办法。三字符组替换方法的可读性显然不如使用and、not等关键字。

 参见 

 C中的三字符组与双字符组

 参考 

 外部链接 


Category:C语言