c++题目问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 17:27:37
int f(int n)
{
static int a=3;
int t=0;
if(n%2){static int a=4;t+=a++;}
else{static int a=5;t+=a++;}
return t+a++;
}

上面这个程序a有三个static
当输出a时应该输出哪个值啊??

局部的静态变量一旦申请它的作用域会坚持到整个程序的结束,
通俗点说就是你的第一局a=3的申请,a就已经被定为静态变量了
第二次和第三次的继续定义就会出现错误,虽然这里可以理解成是对
a的再次赋值,但是c++会认为你这个程序没有硬性错误,但是不会正常执行,
它会说无法执行,但是确实是没错误
我已经试过了。。。

会编译出错

static int a=3;
应该输出
static int a=4为 n%2为真的局部域
static int a=5;n%2为假的局部域

return t+a++于static int a=3;同一域
编译没有错误

a=3

第一条那个A