farmskins:C语言,为什么这个程序最后B=20?第一次等于10?

来源:百度文库 编辑:高考问答 时间:2024/05/03 18:28:06
static b=10;
main()
{
int a;
for(a=1;a<=10;a++) printf("this is b=%d\n",b++);
f();
getch();
}
f()
{
printf("last B=%d",b);
}

for(a=1;a<=10;a++) printf("this is b=%d\n",b++);
第一次循环输出this is b=10,因为b的初值是10,输出以后再进行b++运算
因此当退出循环时输出的是this is b=19,同理,输出完以后进行b++运算,但b是静态变量,当调用f()函数时,输出last B=20

因为第一次引B++的时候,引用的是B的值,而不是B++之后的值。记住,当引用B++的时候,第一次一定是该变量的初值。第二次引用后才是B++累加的值。它和++B不一样。++B是第一次就开始引用B++累加的值了。
还有,楼上的说错了。退出循环的时候,B的值就是20。因为,前面A是小于并等于10的循环条件,而不是小于10。所以循环了10次。而B就会累加10次。最后的输出结果就是20。。

因为b是static类型,也就是静态变量哦,呵呵,知道了吧