2014-02-20 89 views

回答

4

如果你读了解决方案的开头评论它解释了为什么你看到的错误:

It also contains examples of a comment that ends in a star and a comment preceded by a slash. Note that the latter will break C99 compilers and C89 compilers with // comment extensions.

在编译器不支持//风格的注释,这一点:

putchar('/' //**/ 
     1) 

等同于:

putchar('/'/1) 

这是合法的 - 尽管奇 - expre ssion(请记住,C a char是数字类型,因此'/'/1/相同)。发生这种情况是因为序列/**/是空的注释。

在现代编译器//风格的注释,表达最后等于到:

puchar('/' 1) 

这简直是一个错误。

+1

不好意思问这个愚蠢的问题,其实我看了作者的评论。但作为一名外国学生,我的英语其实不太好,我也不懂这句话。现在我做了。谢谢。 –

0

要清楚,原来的代码放置在多行,像这样:

putchar('/' //**/ 
      1); 

从这里,/ ** /部分是注释,所以预处理后,代码会看像这样:

putchar('/'/ 1);

这等于putchar('/');

您正在编译错误,因为您正在将此代码编译为C99,或者很可能是C++,其中//是单行注释。改为编译为C89。

对不起,格式不对 - 从我的手机上写...

相关问题