-1

我正在制作一个计算器应用程序,我想看看是否可以调用我在 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;
}
4

3 回答 3

5

不,一个变量的范围是直到下一个对的末尾{ }

如果你需要在这里访问它,你应该int finished;在顶部定义(你已经做了什么)。

所以只需替换int finished = ...finished = .... 这只是写入预先存在的变量而不是定义一个新变量。

于 2013-06-28T07:04:49.080 回答
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.
于 2013-06-28T07:02:47.053 回答
2

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

在 C 中,规则很简单:

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

在您的情况下,您不能finishedif分支中重新定义。

于 2013-06-28T07:07:29.353 回答