!!! 1:预处理命令末尾误加分号
#include <stdio.h>; —— 分号被当作"空语句"带入编译单元,虽然多数编译器只警告不报错,但在宏定义等场景会直接引发难以理解的错误;预处理命令一律不以分号结尾。
#include <stdio.h>
int main(void)
{
printf("hello");
return 0;
}
!!! 2:语句漏写分号
int a = 1, b = 2
printf("%d", a + b); // 上一行漏写分号,编译报错:expected ';' before 'printf'
正确是什么:每条语句(包括变量定义、表达式语句)末尾都必须有分号;只有复合语句 {} 的右花括号后不加分号。
int a = 1, b = 2;
printf("%d", a + b);
!!! 3:把 main 写成 mian 等拼写错误
函数名拼成 mian,编译虽可通过(它只是"另一个函数"),但链接阶段报 undefined reference to main——程序无法生成可执行文件。
正确是什么:入口函数必须严格写作 main(全小写),标准写法为 int main(void) 或 int main(),并在末尾 return 0;。
??? 1:C 程序总是从 ______ 函数开始执行。
填"第一条语句"或"源程序开头"——C 语言并不要求 main 位于最前面,写在 main 之前的函数或全局变量代码同样先于 main 的语句被安排内存,但程序的执行入口仍是 main。
正确是什么:填 main。执行流程:操作系统调用 main → main 调用其他函数 → main 返回,程序结束。
??? 2:C 程序中每条语句必须以 ______ 结尾。
填"句号 ."或"冒号 :"——把其他语言的习惯带到 C 中,编译直接报错。
正确是什么:填 分号 ;。特例:预处理命令、函数头部的右花括号 }、#include 行均不加分号。
??? 3:注释的作用是 ______,它 ______(参与 / 不参与)编译。
填"提高运行速度、参与编译"——注释不产生任何机器码,对运行速度没有任何影响,反而增加源码体积。
正确是什么:填 说明代码、便于阅读和维护;不参与。注释仅在预处理阶段被剔除,对可执行文件零贡献。



