5

我刚开始在 Mac 上自学 C++,遇到了一些问题。

我编写了一些代码,允许用户输入一个数字,当他们按 Enter 键时,该数字将返回给用户。

Xcode 绝对不会有它。每次我尝试运行我的代码时,它都会说代码存在问题cin>> thisisanumber;

错误出现并说

Invalid operands to binary expression. 错误在第 10 行。

我究竟做错了什么?

#include <iostream>

using namespace std;

int main()
{
   int thisisanumber();

   cout << "Please enter a number: ";
   cin  >> thisisanumber;
   cin.ignore();
   cout << "You entered"<< thisisanumber <<"\n";
   cin.get();
}
4

5 回答 5

10

您已经成为最令人烦恼的 parse的受害者,这意味着thisisanumber被视为一个函数。去掉括号,你应该没问题:

int thisisanumber;

还可以考虑使其更具可读性,例如thisIsANumber. 如果您需要知道它,请thisIsANumber使用驼峰命名约定。

于 2012-07-23T21:01:57.403 回答
3

声明不带括号的变量,例如

int thisisanumber;

带括号,它被解释为一个函数,一个函数不能作为参数传递给>>操作符。

于 2012-07-23T21:02:21.253 回答
2

您的问题是所谓的最令人头疼的 parse。基本上所有可以被解析为函数声明的东西都会被解析。因此,编译器将解释int thisisanumber();为一个函数的声明,该函数thisisanumber采用零参数并返回一个int. 如果您考虑这种行为,那么问题cin>>thisisanumber;应该是不言而喻的。

如果您删除括号,将变量声明更改为int thisisanumber;,您的程序的行为应该像您期望的那样,它thisisanumber是一个类型的变量int

但是,您可能会重新考虑您的命名约定,thisisanumber这并不完全可读。我建议使用this_is_a_number,thisIsANumberThisIsANumber.

于 2012-07-23T21:03:26.113 回答
1
int thisIsANumber;

尝试使其成为变量声明,因为您编写的内容已被解释为函数。

于 2019-05-01T07:10:58.967 回答
0

delete () after thisisanumber,因为 () afterthisisanumber意味着它是一个函数,当它不是。

于 2021-01-16T19:32:49.160 回答