我何时需要在iso646.h头文件中的位运算符和逻辑运算符中使用替代宏?

RobertS支持Monica Cellio

我知道在的标头中iso646.h,定义了以下十一个marco常数以提供按位和逻辑运算符的替代描述:

and是的宏&&

and_eq是的宏&=

bitand是的宏&

bitor是的宏|

compl是的宏~

not是的宏!

not_eq是的宏!=

or是的宏||

or_eq 是一个宏 |=

xor是的宏^

xor_eq是的宏^=


但是何时需要使用这些替代宏?

  • 在哪种情况下,我需要对头文件中的按位和逻辑运算符使用替代宏iso646.h
西蒙·多普勒

如果您的编码未实现完整的ASCII格式,则应使用它:

C从ASCII代码集派生其库。不幸的是,ASCII库不是所有其他常用字符集的子集,并且在欧洲广泛使用的做法也不是全部实现ASCII,而是将其整理序列的某些部分用于特殊的国家字符。

解决方案是国际商定的曲目,可以定义C的国际代表。ISO已定义了这样的标准:ISO 646描述了ASCII的不变子集。

C使用的ASCII库中的字符,而ISO 646库中不存在的字符是:

    # [ ] { } \ | ~ ^

摘自ANSI C基础,[2.2.1.1三部曲序列]

正如@chqrlie所指出的那样,这是1980年代要考虑的重要问题,但如今已不那么重要了。

这也是引入三字母组合的原因(在同一部分中有进一步说明)。因此,当使用非ASCII编码时,这些宏将由中的Trigraph版本替换iso646.h

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以使用按位运算符代替逻辑运算符吗?

我可以在Kotlin中使用非短路逻辑运算符吗?

我们可以在 for 中使用“&&”逻辑运算符吗?

需要澄清Ruby逻辑运算符

无法重载我的课程的逻辑运算符(或)

我的逻辑运算符理解尝试

我不理解使用字符串和布尔值的逻辑运算符

使用一元逻辑运算符的表达式中是否真的需要括号?

我可以在python中遍历逻辑运算符吗?

我如何滥用|| 这段代码中的逻辑运算符?

C中的逻辑运算符导致我的循环出现问题?

我可以使用逻辑运算符OR搜索github标签吗?

何时在mongodb中使用“ $ and”运算符?

我可以使用逻辑 OR(||) 运算符而不是逻辑 AND(&&) 运算符吗

我应该内联运算符==和!=,以防运算符!=()使用运算符==()的否定

我可以将逻辑运算符放在document.querySelectorAll中吗?如果是这样,怎么办?

我想要 true 作为我的最终输出 # 逻辑运算符

我可以根据变量 (bool) 在 if 语句中设置逻辑运算符吗?C#

为什么我们需要在Java中使用移位运算符?

我可以使用三个“或”逻辑运算符与 PHP 中的一个变量进行比较吗

我在JavaScript的哪儿使用按位运算符?

何时在 Ocaml AST 中使用“and”运算符

何时在Unity脚本中使用某些运算符

我可以在=〜运算符中使用哪些RE

我如何在循环中使用 (:= 运算符)?

我无法在 Kotlin 中使用 elvis 运算符

何时使用表运算符APPLY

在何时使用splat运算符

我为什么可以结合位运算符与数学运算符,如&+,Java中?