Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中双斜杠后的分号_C_Comments - Fatal编程技术网

C中双斜杠后的分号

C中双斜杠后的分号,c,comments,C,Comments,我对C语言中的注释有一个问题。 例如,当我们写作时 //this is the first step 这意味着一个评论 但是当我们写作的时候 //this is the first step; 这也意味着评论吗?我的意思是,当我们在双斜杠后添加分号时,这是指注释还是程序的主要部分?双斜杠注释后不会解析任何字符。它是由预处理器剥离的。编译器从未看到它。双斜杠注释后没有字符被解析。它是由预处理器剥离的。编译器从未看到它。双斜杠后的所有内容都是注释。 这包括分号、运算符、预处理器指令、关键字甚至C

我对C语言中的注释有一个问题。 例如,当我们写作时

//this is the first step
这意味着一个评论

但是当我们写作的时候

//this is the first step;

这也意味着评论吗?我的意思是,当我们在双斜杠后添加分号时,这是指注释还是程序的主要部分?

双斜杠注释后不会解析任何字符。它是由预处理器剥离的。编译器从未看到它。

双斜杠注释后没有字符被解析。它是由预处理器剥离的。编译器从未看到它。

双斜杠后的所有内容都是注释。

这包括分号、运算符、预处理器指令、关键字甚至CAT

编辑:

我觉得有趣的是:

//comment \
also part of the comment\
this too part of the comment
我猜反斜杠实际上是被解析的。这是行连续字符。我想值得一提

我猜SO解析器无法识别字符,但它确实存在——至少在MSVC中是这样。不确定它是否是标准的一部分

编辑2:

正如@vsz所指出的,trigraph将被解析,即使在注释中:

/*
??/ is translated to \   
the following is not safe:
*/

//do we really need this??/
i++;

前面的代码
i++不会被执行,因为
??/
\
替换,所以
i++成为注释的一部分。

双斜杠后的所有内容都是注释。

这包括分号、运算符、预处理器指令、关键字甚至CAT

编辑:

我觉得有趣的是:

//comment \
also part of the comment\
this too part of the comment
我猜反斜杠实际上是被解析的。这是行连续字符。我想值得一提

我猜SO解析器无法识别字符,但它确实存在——至少在MSVC中是这样。不确定它是否是标准的一部分

编辑2:

正如@vsz所指出的,trigraph将被解析,即使在注释中:

/*
??/ is translated to \   
the following is not safe:
*/

//do we really need this??/
i++;

前面的代码
i++不会被执行,因为
??/
\
替换,所以
i++成为注释的一部分。

/
-样式注释位于行的末尾。分号不作特殊处理;分号结束语句,而注释不是语句。

/
-样式的注释位于行的末尾。分号不作特殊处理;分号结束语句,而注释不是语句。

它仍然是注释:这两者都不是:

// Hello, world
这也不是:

// Hello, world;

将被执行

它仍然是一条注释:这两条:

// Hello, world
这也不是:

// Hello, world;

将执行

该//将其后面的所有内容划界在同一行上。一切。也就是说,你可以确信,无论你选择评论什么,都将保留评论

在可能出现混淆的情况下,将其与/**/进行对比。例如:

/*这是一个/*糟糕的评论*/*/


//但这是一个/*好的评论*/

这个//将它后面的所有内容划入同一行。一切。也就是说,你可以确信,无论你选择评论什么,都将保留评论

在可能出现混淆的情况下,将其与/**/进行对比。例如:

/*这是一个/*糟糕的评论*/*/


//但是这是一个/*好的评论*/

双斜杠注释掉了行yes。编译器将忽略整行(包括分号,是)

对于多行注释,或与某些代码在同一行上进行注释,请在此处使用/*注释*/

Wiki提供了一些很好的信息:

注(来自维基):

C++样式的行注释以//开头,并延伸到 线路。这种注释风格起源于BCPL,并在C语言中生效 C99语法;它在原始K&R C或ANSI中都不可用 C:


双斜杠注释掉了行yes。编译器将忽略整行(包括分号,是)

对于多行注释,或与某些代码在同一行上进行注释,请在此处使用/*注释*/

Wiki提供了一些很好的信息:

注(来自维基):

C++样式的行注释以//开头,并延伸到 线路。这种注释风格起源于BCPL,并在C语言中生效 C99语法;它在原始K&R C或ANSI中都不可用 C:


分号只是注释中的另一个字符


显然,在注释行末尾加分号的做法是有人在代码度量行上作弊。。。基本计算将分号作为语句的代理。他们应该为自己感到羞耻。

分号只是评论中的另一个字符


显然,在注释行末尾加分号的做法是有人在代码度量行上作弊。。。基本计算将分号作为语句的代理。他们应该为自己感到羞耻。

/
行注释有各种各样的形式。直到行尾,所有内容都被忽略<代码>\
在行尾使注释延伸到下一行。这是一个极端的例子:

\
/\
/|\
-+-\
\|/ \
 V   \

/
行注释有各种类型和形状。直到行尾,所有内容都被忽略<代码>\
在行尾使注释延伸到下一行。这是一个极端的例子:

\
/\
/|\
-+-\
\|/ \
 V   \

仍然是注释,在//之后的同一行上的任何内容都将是注释。在两个斜杠之后和换行符之前出现的任何内容都将被编译器忽略。我投了反对票,因为这个问题没有显示任何研究结果。你甚至没有在你最喜欢的编译器上尝试过它(虽然这不是一个正确性的指标,但会构成研究)。我问这个问题是因为我没有编译器。我试图理解代码,用另一个程序来编写它。这可能只是程序员的事情。。。有一段时间,即使是在写电子邮件的时候,我也习惯于在每一行末尾加上分号;仍然是一条评论,在//之后同一行的任何内容都将是一条评论