一个c++问题不太懂!


#include<iostream>
using namespace std;
int main(){
    int a,b,k;
    while(cin>>a>>b){
        k=a+b;
        if(a!=0&&b!=0){
            int k;
            k=a-b;
            cout<<k<<endl;
        }
        cout<<k<<endl;
    }
} 

1.这两次定义变量k怎么解释?
2.为什么可以定义两次?

(1)都是变量,第一个是记录a+b的和,第二个记录a-b的差
(2)因为第二个k的作用域在if语句中,出了if语句后就失效了。第7行和13行的k使用的是第5行声明的k。
因为作用域不同,所以可以申请两次。
第5行的k的作用域是整个main函数。
第9行的k的作用域只有9-11行。
在9-11行内,优先使用局部变量,也就是优先使用第9行定义的k
如有帮助,请采纳一下,谢谢。

2个k的作用域不同。
第一个k在整个main里都有效。
第二个k只在if的{}范围内有效,从if出去后这个k就被销毁了。

外层k在main范围内有效,内层k只在if语句内有效,且覆盖外层k在if语句内的作用