静态变量a的值
求详细过程#include<stdio.h>
int a=2;
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++;
}
int main()
{
int s=a,i;
for(i=0;i<3;i++)
{
s+=f(i);
}
printf("%d\n",s);
return 0;
}
在线等!!!!!!!!!!! 判断n除以2的余数是1还是0是1的话a=4 是0的话a=5循环到最后参数的值是2 2除以2余数为0所以a=5 紧肛互撸娃M 发表于 2015-7-31 22:13
判断n除以2的余数是1还是0是1的话a=4 是0的话a=5循环到最后参数的值是2 2除以2余数为0所以a=5
结果29是怎样来的 从主函数中看 要求的是 2+f(0)+f(1)+f(2)
再看f(n)这个函数里面有三个a 设第一个a 为 a ; 第二个a 为a1 ;第三个a 为a2
a1 和 a2 都只在其各自if分支里有效所以最后返回值是第一个a
下面我们来计算 :
f(0):t+=a2++---->t等于5,a2自增,a2等于6
return t+a++ ----> 返回t+a等于8(5+3) ,a自增 等于4
f(0)=8
f(1):
t+=a1++ ------> t等于4,a1自增, a1等于5
return t+a++ -----> 返回t+a等于8(4+4),a自增 等于5
f(1)=8
f(2):
t+=a2++ ------->t等于6 ,a2自增
return t+a++ ----->返回t+a等于11(6+5)
所以等于 2 + 8 + 8 + 11 = 29
大神们在说啥呢??怎么我一个字也看不懂 卧槽,我跟楼上的一样,什么都不懂-_-# 好复杂,刚学C语言,看不懂 sunbeam_ 发表于 2015-8-2 00:17
从主函数中看 要求的是 2+f(0)+f(1)+f(2)
再看f(n)这个函数里面有三个a 设第一个a 为 a ; 第二个a 为 ...
++不是比+=的优先级更高吗?比如f(0),先a2自增,为6,然后t=t+(a++),t=0+6=6 吗? lf774733240 发表于 2015-8-2 09:37
++不是比+=的优先级更高吗?比如f(0),先a2自增,为6,然后t=t+(a++),t=0+6=6 吗?
确实是优先级更高,但你要分清楚 a++ 和 ++a
a++是先代入计算再自增
++a是先自增再代入计算
页:
[1]
2