Mrgteo79c @ 2023-03-11 22:48:22
#include <stdio.h>
int main()
{
printf("%c%c%c%c%c",getchar(), getchar(), getchar(), getchar(), getchar());
return 0;
}
by RP_INT_MAX @ 2023-03-11 23:02:25
同问,什么奇技淫巧。
by Yujinhe469 @ 2023-03-11 23:12:57
其思路和栈有共通之处:
系统遍历到前面的 getchar 时不会读入,直到最后一个 getchar 时开始读入,此时从后向前遍历并读入,于是后面的 getchar 读入了前面的字符,具体可以参考后面这份代码
#include <stdio.h>
char awa;
int main()
{
printf("%c%c%c%c%c",getchar(), awa=getchar(), getchar(), getchar(), getchar());
printf("\n%c",awa);
return 0;
}
by ud2_ @ 2023-03-11 23:14:39
原理是运气好,编译器从可能的 120 种执行顺序中挑选了能过这题的一种。
换个编译器就过不了了。
by Yujinhe469 @ 2023-03-11 23:21:35
@ud2_ 不是吧 在我的本地IDE也能过的
by Yujinhe469 @ 2023-03-11 23:22:02
@ud2_ 可能是不同 IDE 的细微差别