#include <stdio.h>
int main() {
int r() {
static int num = 7;
return num--;
}
for(r(); r(); r())
printf("%d",r());
return 0;
}
输出为52。我如何获取输出是我所不知道的,这个问题我学到的关于静态的知识完全错了。
答案 0 :(得分:0)
#include <stdio.h>
int r(){
static int num = 7;
return num--;
}
int main()
{
for(r();r();r())
printf("%d",r());
return 0;
}
静态变量就像全局变量(我的意思是不在堆栈中),但仅对函数 r
可见结果为52,因为它先打印5,然后再打印2
答案 1 :(得分:0)
首次运行r()
时,它将返回7,下次运行6,依此类推。
当r()
的值为0时,for循环将停止。
代码流为:
r() // 7 [1st expression in the for loop]
if (!r()) stop for loop; // 6, so goes into for loop [2nd expression in the for loop]
print (r()) // 5
r() // 4 [3rd expression in the for loop]
if (!r()) stop for loop // 3, continues again
print (r()) // 2
r() // 1 [3rd expression in the for loop]
if (!r()) stop for loop // 0 so exits the for loop
它首先打印5,然后打印2(没有换行符),因此输出为52。