<分区>
这里有两段C代码,但我不明白它们是如何工作的:
程序 1:
#include<stdio.h>
#define s 10
fun() {
#undef s
#define s 20
}
int main(){
printf("%d\n",s);
fun();
printf("%d\n",s);
return 0;
}
Output: 20
20
程序 2:
#include<stdio.h>
#define s 10
int main(){
printf("%d\n",s);
fun();
printf("%d\n",s);
return 0;
}
fun() {
#undef s
#define s 20
}
output: 10
10
我所知道的是预处理器在 main()
开始之前工作并替换它的所有变量。
这里 fun()
在一个 printf()
之后被调用,所以两个程序如何通过改变 fun()
的位置输出不同的值?