Tho*_*hom 2 c return post-increment
由于b++是后增量,b如果return 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++;
}
Run Code Online (Sandbox Code Playgroud)
编辑
#include<stdio.h>
int foo();
int main()
{
foo();
foo();
}
int foo()
{
static int b=1;
printf("%d\n",b);
return b++;
}
Run Code Online (Sandbox Code Playgroud)
结果
1
2
正如我在编辑中看到的那样,为什么会b增加?不return应该立即退出该函数吗?为什么b即使在控制返回后也会增加main()?返回后,函数中的所有活动都不应该结束吗?
许多C(子)表达具有值和副作用.
值b++是b在评估表达式之前的值; 它的副作用是增加一个值b.
因此,表达式return b++;返回先前的值b并更新b.当b静态时,更新保持在下一个函数调用; 当b一个普通的旧本地变量时,更新就会丢失(智能编译器甚至不会发出代码来更新对象).