我写了一个接受输入字符并输出该字符的程序,就像这样
int ch = getchar();
printf("%c", ch);
Run Code Online (Sandbox Code Playgroud)
它像我预期的那样工作.然后我决定先欢迎并打印Hello.
printf("Hello!\n");
int ch = getchar();
printf("%c", ch);
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,这导致编译器抛出两个错误:
错误C2065:'ch':未声明的标识符
错误C2143:语法错误:缺少';' 在'类型'之前
我不明白为什么添加第一行会导致这种情况发生.无论如何,我重构了程序以摆脱int声明,错误神奇地消失了.
printf("Hello!\n");
printf("%c", getchar());
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?什么是导致这些错误出现然后消失的魔力?
如果您使用的是较旧的c编译器,则必须在其他任何内容之前进行所有变量声明.尝试:
int ch;
printf("Hello!\n");
ch = getchar();
printf("%c", ch);
Run Code Online (Sandbox Code Playgroud)