gpt4 book ai didi

c - 如果在函数中使用, "b"中 "return b++"的增量会怎样?

转载 作者:行者123 更新时间:2023-12-02 05:42:58 24 4
gpt4 key购买 nike

因为 b++ 是后递增的,如果在下面的程序中用作 return 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() 之后也会递增?函数中的所有事件不是应该在返回后结束吗?

最佳答案

许多 C(子)表达式都有一个值和一个副作用。

b++的值是表达式求值前b的值;它的副作用是将 b 中的值增加一。

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

关于c - 如果在函数中使用, "b"中 "return b++"的增量会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16505359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com