我正在研究C++中的初始化。
我构建了这个概念证明,但我不明白编译器的错误含义。
(我已经知道在
cin
内部声明变量不是简单自然的[甚至可能不合法甚至不合适]的方式。之前在外部定义/声明它很容易,没有问题。我问了这个问题更详细地了解正在发生的事情并清楚地区分概念)。 源代码片段:
#include <iostream>
int main ()
{
std::cin >> int input_value;
return 0;
}
尝试编译时:
% g++ -Wall -o p44e1 p44e1.cc
p44e1.cc:5:18: error: expected '(' for function-style cast or type construction
std::cin >> int input_value;
~~~ ^
1 error generated.
函数体由零个或多个语句组成。
有几种说法。我们这里只关心两个:
声明声明,例如
int input_value;
表达式语句。也就是说,
e;
。其中 e
是一个表达式,意思是“与运算符连接的操作数,或单个操作数”。
std::cin >> input_value;
将是一个表达式语句,其中 std::cin >> input_value
是一个表达式(std::cin
和 input_value
是操作数,>>
是一个运算符)。
所以
std::cin >> int input_value;
是完全无效的。 int input_value;
必须是一个单独的语句,但您试图将其嵌入到其他(表达式)语句中。