gpt4 book ai didi

对 static int 和在 printf 中调用它们感到困惑

转载 作者:太空狗 更新时间:2023-10-29 16:05:51 24 4
gpt4 key购买 nike

请测试这段代码并给我你的答案:

#include <stdio.h>

int func() {
static int n = 0;
n++;
return n;
}

int main() {
/*int first = func();
int second = func();*/
printf(" first call : %d \n second call : %d ",func(),func());
return 0;
}

逻辑上它应该打印 1 和 2 但它正在打印 2 和 1 。如果您取消注释注释并打印变量“first”和“second”,问题就解决了!发生了什么事?

已经谢谢你了!

最佳答案

函数调用的参数被评估的顺序是未指定的,即编译器可以在将返回值传递给 printf 之前以任何顺序自由地进行两个 func() 调用。如果您首先将结果分配给变量,显然您可以决定它们的使用顺序。

关于对 static int 和在 printf 中调用它们感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41076893/

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