【问题标题】:Literal "or" in c++ program? [duplicate]C ++程序中的文字“或”? [复制]
【发布时间】:2015-01-02 05:36:05
【问题描述】:

当我注意到我的 C++ 代码包含以下行时,我正在将我前一段时间编写的 C++ 函数翻译成 python:

  if(MIsScaledOut()) {
    if(DataType()==UnknownDataType or DataType()==h)
      Descriptor = Descriptor + DataTypeString() + "OverM";

里面有一个or!这可能是因为我之前从python翻译,忘记切换到||

这段代码在不同的操作系统中编译,使用不同的编译器,我从未见过它有问题。是这个标准吗,还是到目前为止我只是运气好,这是我应该担心的事情?

【问题讨论】:

  • 大家都在使用||&&而不是andor,真的很遗憾。
  • @Elazar:可悲的是,在逻辑中经常出现的完美的 cromulent 标识符在所有范围内都不可用。
  • 嵌入一种语言总是很有趣的。 [对不起;我只需要...]
  • 它应该是通过标准化编译器指令选择加入的。就像 digrams/trigrams(连同他们的模板问题)
  • 这是有效的,尽管there are some details,在 C 中你需要包含 iso646.h 和 Visual Studio 在 C++ 中不兼容并且他们不打算修复它。

标签: c++ c keyword


【解决方案1】:

在谷歌记住正确的词后,我现在看到了 it is listed as a C++ keyword,以及以前在 C++ 中从未见过(注意到?)的各种类似关键字,如 andreason these exist 是因为有些编码没有传统运算符拼写使用的某些标点符号:{}[]#\^|~

正如@mafso 指出的那样,通过包含<iso646.h> 标头(defines them as macros),可以在C 中使用替代的“拼写”版本。

The question 其中这个被标记为重复的,也指出了digraphs and trigraphs 的存在,可以用来代替缺失的字符。 (这个问题也说“每个人都知道”他们。显然,我没有......)

【讨论】:

  • 记得点击对勾关闭问题。
  • 由于这也是用 C 标记的,因此可以指出,它们不是关键字(例如写 int and = 42; 是合法的),但如果包含 <iso646.h>,则作为宏提供(参见 C11 (n1570) 7.9)。
  • @ThomasMatthews 我必须等待两天才能接受我自己的答案。 :\
  • @mafso 是的。在这个答案的第二个链接中提到了它,但明确一点也没有什么坏处。谢谢!
猜你喜欢
  • 2017-09-02
  • 2011-08-26
  • 2014-10-09
  • 1970-01-01
  • 2014-06-18
  • 1970-01-01
  • 2013-08-26
  • 2015-08-19
  • 2017-09-02
相关资源
最近更新 更多