我们先来看几个带有注释的定义:
a. int/****/i;
b. char* s = "abcd
c. //Is a\
valid comment?
d. in/****/t i;
a,b,c,d哪些是正确的?哪些是错误的?
答案:d错误,a,b,c都正确。
a. /**/注释在编译的时候会被替换成空格;
b. " "之间的字符会被当做常量;
c. \是连接符,链接下面的字符,在//后作为一个整体,注意这个反斜杠的后面不能有空格,反斜杠的下面一行之前也不能有空格。我们在编码的时候不提倡写这样的注释,这里只是挖掘一下注释的陷阱;在常规的用法中,我们还是要保持中规中矩,养成良好的注释风格,这样才不至于出错。
d./**/注释在编译时替换成空格导致in t i;出错。
接着,我们再来看一个问题:
y = x/*p;
实际上,编译器把/* 当作是一段注释的开始,把/*后面的内容都当作注释内容,直到出 现*/为止。这个表达式其实只是表示把x 的值赋给y ,/*后面的内容都当作注释。但是,由 于没有找到*/,所以提示出错。
我们可以把上述表达式修改为y = x/ *p或者y = x/(*p);这样的话就是想要表达的意思了。
总之,我们能加()的地方一定不要偷懒,这对于代码的可读性有很大帮助,也能防止我们出现一些不必要的错误,我们对于上述问题不做提倡,了解即可。