宏重新定义逻辑运算符

Ait*_*bil 3 c

我是 C 编程新手,所以如果这听起来像是一件愚蠢的事情,请原谅我。

我有一个想法试图让我的代码更具可读性,这个想法是#define 逻辑运算符,例如#define OR ||.

如果有人可以指导我这是不好的还是好的做法,它是否常见等等......以及如果它有任何副作用,我将不胜感激。提前致谢。

Eri*_*hil 8

该运算符和其他运算符的替代名称已经是标准 C 的一部分。使用#include <iso646.h>定义:

姓名 替代品
&&
和_eq &=
比特兰 &
比托尔 |
复杂
不是
不_eq !=
或者 ||
或_eq |=
异或 ^
异或方程 ^=

  • @Ait-GacemNabil 我建议避免“iso646.h”并学习使用传统运算符。您应该努力编写易于理解的代码,并且“iso646.h”并未广泛使用。 (5认同)
  • @Ait-GacemNabil 熟悉它们的唯一方法就是实际使用它们。没有其他办法。 (4认同)

klu*_*utt 7

不。

AC 编码器应该像读简单的英语一样阅读这些运算符。而且,您不会对运算符 +、-、/ 和 * 执行相同的操作,对吧?逻辑学家不写或。他们使用符号。因此,只要习惯阅读它们即可。

if(x OR y)如果我在一段代码中看到这个表达式,我的第一个想法是“这一定是初学者”,而我的下一个想法是“他们做对了吗?使用了||还是他们使用了一个|?” 我最好检查一下以确定。

这是好的做法吗

我的意见是绝对不行

这很常见吗

不,因为大多数 C 程序员都同意我的观点

以及它是否有任何副作用

并不真地。它是一个宏,因此可以简单地剪切和粘贴。

只是为了完整性。它确实存在一个标准标头,可以执行您想要的操作iso646.h。但很少使用。在埃里克发布他的答案之前我从未见过它。因此,如果您想这样做,请使用该标头而不是重新发明轮子。