我对C语言的评论有疑问。当我们写作例如
//this is the first step
这意味着评论。
但是当我们写作时
//this is the first step;
这也意味着评论吗?我的意思是当我们在双斜线后添加分号时,这是否意味着程序的注释或主要部分?
双斜线注释出行是。编译器将忽略整行(包括分号,是)。
对于多行注释,或与某些代码在同一行注释,请使用/ * comment here * /
Wiki在这里有一些很好的信息:http://en.wikipedia.org/wiki/C_syntax#Comments
注意(来自Wiki):
C ++样式行注释以//开头并延伸到行尾。这种评论风格起源于BCPL,并在C99中成为有效的C语法;它在原始的K&R C和ANSI C中都不可用:
双斜线后的所有内容都是评论。
这包括分号,运算符,预处理程序指令,关键字甚至猫。
编辑:
我发现有趣的东西:
//comment \
also part of the comment\
this too part of the comment
我想反斜杠实际上是解析的。这是线条延续字符。值得一提的是我想。
我想SO解析器不识别该字符,但确实存在 - 至少在MSVC中。不确定它是否属于标准的一部分。
编辑2:
正如@vsz指出的那样,即使在评论中也会解析三字符:
/*
??/ is translated to \
the following is not safe:
*/
//do we really need this??/
i++;
之前的代码i++;
将不会被执行,因为??/
被\
取代,因此i++;
成为评论的一部分。
分号只是注释中的另一个字符。
按理说,在注释行末尾放置分号的做法是欺骗代码行度量的人...基本计算将分号视为语句的代理。他们该为自己感到惭愧。
解析双斜杠注释后没有字符。它被预处理器剥离了。编译器永远不会看到它。
//
风格的评论走到了尽头。分号不经过特殊处理;分号结束语句,而注释不是语句。
它仍然是一个评论:这两个:
// Hello, world
也不是这样
// Hello, world;
将被执行
//在同一行上划分跟随它的所有内容。一切。那就是你可以确信,无论你选择评论什么都将留下评论。
与/ * * /形成对比,可能出现混淆。例如:
/ *这是一个/ *坏评论* / * /
//但这是一个/ *好的评论* /
//
线评论有各种各样的形状。直到最后,一切都被忽略了。该行末尾的\
使评论延伸到下一行。这是一个极端的角落案例:
\
/\
/|\
-+-\
\|/ \
V \