尝试在if语句之后调用C中的变量

时间:2013-06-28 06:59:55

标签: c

我正在制作一个计算器应用程序,我想知道是否可以调用我在if语句中设置的变量; if语句结束后。我可以做吗?我尝试了几件事,但我无法让它发挥作用。

int main()
{
    // ...
    int finished;
    do{
        // ...           
        if(operator == 1){
            int finished = number[1] + number[2];
            printf("\n\n%d \+ %d is: %d", number[1], number[2], finished);

        }
        if(operator == 2){
            int finished = number[1] - number[2];
            printf("\n\n%d \- %d is: %d", number[1], number[2], finished);

        }
        // ...
        printf("\ndebug %d\n: ", finished);
        // ...
    } while (doAgain == 1);
    return 0;
}

3 个答案:

答案 0 :(得分:5)

不,变量的范围是最后一个{ }对的结尾。

如果您需要在此处访问它,您应该在顶部定义int finished;(您已经做的)。

所以只需将int finished = ...替换为finished = ...即可。这只是编写预先存在的变量而不是定义新变量。

答案 1 :(得分:2)

不,在变量超出范围后,您无法访问该变量。

您需要添加一个新变量:

int fin;

if (...) {
    int finished;
    fin = finished;
}

fin; // still accessible. but finished no longer exists.

从内部变量中删除声明,以便使用更高范围的声明:

int finished;

if (...) {
    finished = ...;
}

finished; // still accessible, of course.

答案 2 :(得分:2)

在C和几乎所有编程语言中,有两件与变量相关的东西:可见性领域(范围)和生命领域。你的问题涵盖了第一个问题。

在C中,规则很简单:

  • 全局变量在当前编译单元中随处可见
  • 局部变量仅在封闭的{ .. }范围
  • 中可见

在您的情况下,您不得重新定义finished分支中的if