为什么在C++中不能使用声明语句作为运算符?

问题描述 投票:0回答:1

我正在研究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.
c++ initialization
1个回答
6
投票

函数体由零个或多个语句组成。

有几种说法。我们这里只关心两个:

  • 声明声明,例如

    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;
必须是一个单独的语句,但您试图将其嵌入到其他(表达式)语句中。

© www.soinside.com 2019 - 2024. All rights reserved.