#include <stdio.h>
int main(void) {
int i = 0;
printf("abc %n %d", &i, i);
printf("\n%d\n", i);
}
当我执行了这个命令后,得到了以下结果。
abc 0
4
我认为这个结果是期望的。
但是当我执行下一个命令时,得到了不同的结果。
int main(void) {
int i; // not initialize
printf("abc %n %d", &i, i);
printf("\n%d\n", i);
}
产生的结果:
abc 1
4
我不知道为什么第一个printf()
中i
的结果是1
。
更奇怪的是,我发现了更多异常行为:
int main(void) {
int sdf;
printf("abc %n %d", &sdf, sdf);
printf("\n%d\n", sdf);
int i;
printf("abc %n %d", &i, i);
printf("\n%d\n", i);
}
使用此输出:
abc 1
4
abc Random_Value
4
第一个总是显示1,但其他则显示随机值(我认为这是垃圾值)。
我认为意图就是产生垃圾值,但我不明白为什么第一个输出结果不同。
1
。 - 0___________