是否可以在同一个表达式中声明表达式将要使用的变量?

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

我正在研究C++中的声明、定义和初始化。
我构建了这个概念证明,但我不明白编译器的错误含义。

源代码片段:

#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个回答
7
投票

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

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

  • 声明声明,例如

    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.