12-注释符号

注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。

测试环境:Ubuntu 10.10

GCC版本:4.4.5

一、注释的第一印象

对话

 - 学生:

  老师,我觉得注释没有必要深究,因为很简单,对程序功能也没有影响。

 - 老师:

  注释是C语言最重要的工具,我们先看自己有没有能力驾驭它,在讨论有没有必要深究。

二、似是而非的问题

下面的注释是正确的吗?

int main()
{
	int/*...*/i;
	char* s = "abcdefg	//ijkmn";
	//Is it a\
	  valid comment?
	in/**/tj;
	return 0;
}
实例分析
初探注释规则
12-1.c
#include <stdio.h>

int main()
{
    int/*...*/i;    //true

    char* s = "abcdefgh  //hijklmn";    //true
    
    //Is it a \		//true
    valid comment?
    
    in/*...*/t i;    //error
    
    return 0;
}

知识点:

“\”是接续:表示下一行内容和这一行内容相同。

三、注释规则

1)编译器在编译过程中使用空格替换整个注释

2)字符串字面量中的//和/*...*/不代表注释符号

3)/*...*/型注释不能被嵌套

四、有趣的问题

1)你觉得y = x/*p是什么意思?

   作者本意:把x除以*p的结果赋值给y。

   编译器:将/*作为一段注释的开始,把/*后的内容都当成注释内容,直到*/出现为止。

   在编译器看来,注释和其它程序元素是平等的。因此,作为工程师不能轻视注释。

五、教科书型注释

int main()
{
    r = n/2;	//r是n的一半
    while((r - n/r)<= t)	//循环,仅当r - n/r不大于t
    {}
  
    r = r + n * t;	//对变量r进行赋值

    n++;	//变量n自增1

    return 0;		
}

注释用于阐述原因和意图而不是描述程序的运行过程!

六、迷惑型的注释

int main()
{
    init();
	    
    //...
    //...

    sad = 0x723;	//R.I.P.V.B.

    //...
    //...

    finalize();
	    
    return 0;
}

写注释不是晒心情,必须无二义性,起到对代码进行提示的作用,避免使用缩写!

七、忽悠性注释

int main()
{
    //...
    //...

    //Bob 07/24/1995
    /*我知道这个问题很难解决而且
     *现在必须依赖于这个contains函数
     *但我以后会用一种更直观优雅有意义的方式
     *重写这段代码
     *现在这么做只是由于时间紧迫,但我一定会解决。
     */

    if( contains(s,"error"))
    {
        exit(1);
    }

    //...
    //...

    return 0;
}

     注释是对代码的提示,避免臃肿和喧宾夺主。

小结

1)注释应该准确易懂,防止二义性,错误的注释有害无利

2)注释是对代码的提示,避免臃肿和喧宾夺主

3)一目了然的代码避免加注释

4)不要用缩写来注释代码,这样可能会产生误解

5)注释用于阐述原因和意图而不是描述程序的运行过程

发布了40 篇原创文章 · 获赞 1 · 访问量 1770

猜你喜欢

转载自blog.csdn.net/piaoguo60/article/details/103776395
今日推荐