【问题标题】:Can't name a boolean function " xor() " in c++ [duplicate]无法在 C++ 中命名布尔函数“xor()”[重复]
【发布时间】:2019-07-24 20:46:06
【问题描述】:

我正在尝试创建一个 XOR 运算符,但由于未知原因,我的编译器不接受 bool xor() 作为函数,它也不允许我调用它或以任何可能的方式使用它。

我想指出,我正在关注一本书来学习 C++。具体是 Herbert Schildt 的“从头开始学习 C++”(第 3 版) 本书引用了这段代码。

如果我将函数命名为 bool xar()bool XOR(),我的代码在这里工作得很好,但是由于我正在尝试学习 C++,所以我想了解一下为什么会发生这个错误。

#include <iostream>
using namespace std;

bool xor(bool a, bool b);

int main()
{
    bool q, p;
    cout << "Enter Q (0 or 1): ";
    cin >> q;
    cout << "Enter P (0 or 1): ";
    cin >> p;

    cout << "Q AND P: " << (q && p) << '\n';
    cout << "Q OR P: " << (q || p) << '\n';
    cout << "Q XOR P: " << xor(q, p) << "\n";
    cout << "nice";

    return 0;
}


bool xor(bool a, bool b)
{
    return (a || b) && !(a && b);
} ```

// The error message i receive is from the lines:
// ---------------------------
// bool xor(bool a, bool b);
// *expected an identifier*
// ---------------------------
// cout << "Q XOR P: " << xor(q, p) << "\n";
// *expected an expression*
// ---------------------------
// bool xor(bool a, bool b)
// *expected an identifier*

【问题讨论】:

标签: c++ function boolean xor


【解决方案1】:

xor 是关键字,不能用作代码中的名称。 C++ 提供Alternative operator representations,因此您可以使用or,而不是使用||^ 有一个 xor,因此您不能使用该名称。

【讨论】:

  • 感谢您的快速回复。我用的这本书很旧了,从第 3 版出版之日起,肯定发生了很多变化。
  • @TassTsourtzouklis 是的,您可以尝试从此处的精选列表中选择一本书:stackoverflow.com/questions/388242/…
  • @TassTsourtzouklis AFAIK 这些替代方案一直存在,只是很多书没有涵盖它们。大多数编码人员使用符号而不是名称,因此大多数书籍甚至都不会涉及它们,因为符号是您在绝大多数时间会看到的。
  • @TassTsourtzouklis 一些编译器,如 VisualStudio 的编译器,没有这些关键字作为关键字。这可能是东西溜进去的原因
  • @Ayxan 可以选择将它们设为关键字。有趣的阅​​读主题:stackoverflow.com/questions/24414124/…
猜你喜欢
  • 1970-01-01
  • 2015-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-07
  • 2015-09-06
相关资源
最近更新 更多