应该在c ++中使用"not,and,or not_eq .."

ani*_*nio 6 c++ syntax

所以看起来像这些:http://www.cplusplus.com/reference/clibrary/ciso646/是c ++中的关键字.

我的问题是.这是c ++标准的一部分吗?

主编译器是否可以依赖此功能?我知道gcc确实支持这些关键字.

最后,也许这更像是一个偏好或风格问题,但使用关键字而不是标准运算符(!,!=,&& ...等)是否有任何优势?

Kon*_*lph 10

我的问题是.这是c ++标准的一部分吗?

是.

主编译器是否可以依赖此功能?

是.但MSVC默认情况下不支持此功能,您需要传递选项/permissive-(或者,虽然这是错误和过时的/Za),它会禁用Microsoft语言扩展.对于几乎所有的C++项目来说,启用此选项似乎是一个好主意,默认情况下它只是一个耻辱.

但是使用关键字比标准运算符有什么好处

一般来说,没有.但在的情况下and,or,not,很多(虽然可能不是大多数)人觉得它更具有可读性.我个人建议使用它们.

如果你绝对希望代码在没有/permissive-标志的情况下在MSVC上编译,#include <ciso646>(这是在遵守C++实现时为空的标准头,但是为MSVC上的运算符添加了宏).

  • 谁更可读?大多数有经验的C系列编码器会对包含这些运算符的代码进行双重处理,而不是"&&","||"和`!`,这是他们非常习惯看到的.我认为它们对于编码人员来说是不那么可读的,编程人员是你在考虑编写"可读"代码时应该瞄准的人. (3认同)
  • @meagar大多数语言都将关键字用于逻辑表达式,无论是独占使用还是作为允许的替代方法。C#和Java是唯一不允许这样做的工具,但我敢打扰(但我敢保证还有更多)。C程序员可能不习惯它,但是有理由禁止其他好的功能,并且它对我没有任何影响。特别是`not x`比`更具可读性!x`,因为它使操作员更容易看到并且被忽略的可能性较小。而且我认为a和b清楚地表明我们正在处理逻辑条件,而不是(例如)数字。 (2认同)
  • 我并不是在争论其他功能,我是在争论对于经验丰富的程序员来说“&amp;&amp;”应该比“and”更具可读性。这是具有 C 风格语言经验的人所期望看到的在“if”语句中将两个变量粘合在一起的情况。 (2认同)

Oli*_*rth 7

这是c ++标准的一部分吗?

是.请参阅[lex.digraph]部分中的表格.

使用关键字比标准运算符有什么优势吗?

我的理解是引入了原始的有向图(<%而不是{等等)以允许具有简单键盘的人能够编写C代码(维基百科证实了这一点).也许同样的理由适用于not_eq等等.但是AFAIK,现在没有充分的理由去写这些东西(除非你在智能手机上编码),尤其是因为99%的程序员不知道它是有效的C++!


sea*_*ean 5

是的,他们受到支持.

就问题的后半部分而言,它们可以导致更易读的代码,尤其是在处理按位运算符以及同时处理逻辑运算时,例如:

if( a & 1 == 0 || c | a == 2 );
Run Code Online (Sandbox Code Playgroud)

VS

if( a & 1 == 0 or c | a == 2 );
Run Code Online (Sandbox Code Playgroud)