nos*_*omo 0 c++ initialization
我正在研究 C++ 中的初始化。在这个概念验证中。我不明白编译器的建议。(我已经知道在 cin 内部声明变量不是简单自然的(甚至可能不合法甚至不合适)方式。之前在外面声明它很容易,没有问题。但我问这个问题只是为了了解更多深入了解发生了什么。尝试以更好的方式理解 C++,特别是初始化,众所周知这不是一个微不足道的主题)。
#include <iostream>
int main ()
{
std::cin >> int input_value;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当尝试编译时:
% 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.
Run Code Online (Sandbox Code Playgroud)
函数体由零个或多个语句组成。
有几种说法。我们这里只关心两个:
声明声明,例如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;必须是一个单独的语句,但您试图将其嵌入到其他(表达式)语句中。