SOF*_*ser 3 c variables static
请测试此代码并给我你的答案:
#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;
}
Run Code Online (Sandbox Code Playgroud)
从逻辑上讲,它应该打印1和2,但它打印2和1.如果取消注释注释并打印变量"first"和"second",问题就解决了!怎么了?
谢谢你!
函数调用参数的计算顺序是未指定的,即编译器可以func()在将返回值传递给任何顺序之前以任意顺序进行两次调用printf.如果您首先将结果分配给变量,显然您可以决定使用它们的顺序.