有人使用命名的布尔运算符吗?

ste*_*anv 13 c++ boolean

或者我们都坚持我们的教学"&&,||,!" 办法?

我们为什么要使用其中一个的任何想法?

我只是想知道,因为有几个答案说明代码应该尽可能自然,但是我没有看到很多带有"and,or,not"的代码,而这更自然.

Gre*_*ill 19

我喜欢not操作员的想法,因为它比!操作员更明显.例如:

if (!foo.bar()) { ... }

if (not foo.bar()) { ... }
Run Code Online (Sandbox Code Playgroud)

我建议第二个更明显和可读.不过,我不认为同样的论点必然适用于andor形式.

  • 如果你没有找到!foo.bar()足够可见,你也可以写!!!!! foo.bar().由于5是奇数,它相当于!foo.bar(). (31认同)
  • 功能有点矫枉过正.请改用括号! (3认同)
  • 我使用`== false`而不是`!`,因为它对我来说不够可见. (2认同)

Too*_*the 9

"名字里面有什么?我们称之为&&,||或者!任何其他名字都会闻到它的味道."

换句话说,自然取决于你习惯的东西.


ina*_*ruk 7

过去,这些都没有得到支持.即使是现在,您仍需要对某些编译器进行特殊切换以启用这些关键字.这可能是因为旧的代码库可能有一些函数|| 名为"和"或"不"的变量.


Mic*_*urr 7

使用它们的一个问题(无论如何)是在MSVC中你必须包括iso646.h或使用(主要是不可用的)/ Za开关.

我遇到的主要问题是它们不常用的Catch-22,所以它们需要我的大脑积极处理意义,老式的操作者或多或少根深蒂固(有点像阅读之间的区别学习语言与母语相比.

虽然我确信如果他们的使用变得更加普遍,我会克服这个问题.如果发生了这种情况,那么我就会遇到一些布尔运算符有关键字但有些没有关键字的问题,所以如果使用了替代关键字,你可能会看到如下表达式:

if ((x not_eq y) and (y == z) or (z <= something)) {...}
Run Code Online (Sandbox Code Playgroud)

在我看来,他们应该为所有(至少比较)运营商提供替代令牌:

if ((x not_eq y) and (y eq z) or (z lt_eq something)) {...}
Run Code Online (Sandbox Code Playgroud)

这是因为提供备用关键字(以及有向图和三角形)的原因不是为了使表达式更具可读性 - 这是因为历史上某些地方已经存在(可能仍然是)键盘和/或代码页而没有某些标点字符.例如,ISO 646代码页(惊喜)的不变部分缺少|",",^"和~"等字符.


Joh*_*han 5

虽然我从很长一段时间以来一直在编写C++,但我不知道关键字"and""或"和"not"是允许的,我从未见过它.

我搜索了我的C++书籍,我发现了一小部分提到正常运算符的替代表示"&&","||" 和"!",它解释了那些没有"&!|"的非标准键盘的用户 符号.

有点像C中的三字母.

基本上,我会对它们的使用感到困惑,我想我不会是唯一的.使用非标准的表示,应该有充分的理由使用.如果使用,它应该在代码中一致地使用,并在编码标准中描述.