1 注释的第一印象
一提起注释,第一印象总觉得注释没有必要深究,注释太简单了,对程序也没什么影响,其实注释是 C 语言的重要工具。
下面看一下下面的注释正确吗?
//12-1.c
#include<stdio.h>
int main(){
int/*...*/i;
char* s = "abcdefg //ijkmn";
// Is it a\
valid comment?
in/*...*/t j;
return 0;
}
编译结果如下:
第 4 行被程序认为是 int i;
第 5 行的 “abcdefg //ijkmn” 被看作一个字符串
第 6 行的 \ 叫做换行符,表示此行未结束,所以第七行也视为注释
第 7 行有错误,并不是我们认为的 int j;
说了上面的结果,下面就看看注释的规则吧
2 注释规则
- 编译器在编译过程中使用空格代替整个注释
- 字符串字面量中的 // 和 /*…*/ 不代表注释符号
- /*…*/ 型注释不能被嵌套
下面看一个有趣的例子
对于 y = x/*p ,这条语句会是什么意思?
作者的本意向表达的是:把 x 除以 *p 的结果赋值给 y。
编译器不这么认为,编译器把 /* 后面的内容都当作注释,直到 */ 出现为止。
修改:将 y = x/*p 改成 y = x / *p 即可,也就是在 / 和 * 之间加一个空格。这样就不会被当作注释了。
在编译器看来,注释和其他程序元素是平等的。因此,我们不能轻视注释。
3 小结
1、注释应该准确易懂,防止二义性,错误的注释有害无利
2、注释是对代码的提示,避免臃肿
3、一目了然的代码不要注释;不要用缩写注释,避免误解
4、注释用于阐述原因和意图,而不是描述程序的运行过程