在下面的程序中,如果使用 return b++
,由于 b++
是后增量,那么 b
的增量会发生什么情况?
#include<stdio.h>
int foo(int);
int main()
{
int a=8;
printf("%d",foo(a));
}
int foo(int a)
{
static int b=a*a;
return b++;
}
编辑
#include<stdio.h>
int foo();
int main()
{
foo();
foo();
}
int foo()
{
static int b=1;
printf("%d\n",b);
return b++;
}
结果
1
2
根据我在编辑时所见,为什么会增加b
?return
不应该立即退出该函数吗?为什么b
在控制权返回到main()
之后仍然增加?难道不是所有的活动都应该在return
之后结束吗?
b
上的关键字static
。这段代码在C编译器中无法通过编译。但在C++编译器中可以,并且行为是"如你所期望的"。 - Mats Petersson