如果在函数中使用,"return b ++"中"b"的增量会发生什么变化?

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()返回后,函数中的所有活动都不应该结束吗?

pmg*_*pmg 5

许多C(子)表达具有值和副作用.

b++b在评估表达式之前的值; 它的副作用是增加一个值b.

因此,表达式return b++;返回先前的值b并更新b.当b静态时,更新保持在下一个函数调用; 当b一个普通的旧本地变量时,更新就会丢失(智能编译器甚至不会发出代码来更新对象).