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