VC++请问输出为什么是7

来源:百度知道 编辑:UC知道 时间:2024/06/18 12:40:26
# include<iostream.h>
# include<cmath>
void main()
{
int k,m,n;
k=(m=5,n=3);
{
int m,n;
k=k+1;
m=n=k;

}
m=k+n;
cout<<m<<endl;
}

# include<iostream.h>
# include<cmath>
void main()
{
int k,m,n;
k=(m=5,n=3); //C++中括号的优先级最低,并且括号返回为右值,所以m,n都成功赋值,而传递给k的值是n,等于3
{
int m,n; //在这个{}域内声明的变量,与在此域外声明的变量不是同一个
k=k+1; //这个是用的此域外的k,结果为k=4
m=n=k; //这里的m,n依然是此域内的m,n,m=n=4
}//此域作用范围到此为止
m=k+n; //这里的k=4,n=3,并且将4+3的值重新赋值给m
cout<<m<<endl;
}

k = (m = 5, n = 3);执行后m = 5 n = 3 k = 3
后面{}里的m和n和外面的m和n无关,执行后k = 4
最后m = 4 + 3 = 7