C中静态变量static的一道题
intfunc(void){staticintcounter=2;cout<<counter<<endl;counter=counter>>1;returncounter...
int func(void)
{
static int counter=2;
cout<<counter<<endl;
counter=counter>>1;
return counter*=++counter;
}
int main()
{
int answer;
answer =func()+func()*func();
cout<<answer<<endl;
}
输出2 4 9 229
求最后答案的解题过程! 展开
{
static int counter=2;
cout<<counter<<endl;
counter=counter>>1;
return counter*=++counter;
}
int main()
{
int answer;
answer =func()+func()*func();
cout<<answer<<endl;
}
输出2 4 9 229
求最后答案的解题过程! 展开
1个回答
展开全部
counter=counter>>1;
return counter*=++counter;
首先counter=counter>>1;是将counter的值右移一位,即除以2
然后counter*=++counter,首先计算表达式右面的值,即++counter,++在左面是先++再参与计算,而且counter*=++counter等价于counter = counter * (++counter);
所以经过一次函数计算,返回值为(当前值/2 + 1)的平方,所以算吧
answer =func()+func()*func();
先计算func()=4,在计算func()=9,最后一次计算是25,
answer = 4 + 9 * 25;
等于229
return counter*=++counter;
首先counter=counter>>1;是将counter的值右移一位,即除以2
然后counter*=++counter,首先计算表达式右面的值,即++counter,++在左面是先++再参与计算,而且counter*=++counter等价于counter = counter * (++counter);
所以经过一次函数计算,返回值为(当前值/2 + 1)的平方,所以算吧
answer =func()+func()*func();
先计算func()=4,在计算func()=9,最后一次计算是25,
answer = 4 + 9 * 25;
等于229
追问
为什么到25的时候停止运算?
追答
。。。
有三个func呀,调用了三次,当然到25就停止了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询