C语言深度剖析--注释误会

y  =x/*p 


    y = x/*p ,这是表示x 除以p 指向的内存里的值,把结果赋值为y ?我们可以在编译器 
上测试一下,编译器提示出错。 
    实际上,编译器把/* 当作是一段注释的开始,把/*后面的内容都当作注释内容,直到出 
现*/为止。这个表达式其实只是表示把x 的值赋给y ,/*后面的内容都当作注释。但是,由 
于没有找到*/,所以提示出错。 

    我们可以把上面的表达式修改一下: 
    y = x/ *p 
    或者 
    y = x/(*p) 
    这样的话,表达式的意思就是x 除以p 指向的内存里的值,把结果赋值为y 了。 
    也就是说只要斜杠(/ )和星号(*)之间没有空格,都会被当作注释的开始。这一点一 

定要注意。 






几个似非而是的注释问题 


    C 语言的注释可以出现在C 语言代码的任何地方。这句话对不对?这是我当学生时我 
老师问的一个问题。我当时回答是不对。好,那我们就看看下面的例子: 


    A ),int/*...*/i; 


    B ),char* s="abcdefgh  //hijklmn"; 


    C), //Is it a \ 


      valid comment? 


    D), in/*…*/t i; 


    我们知道C 语言里可以有两种注释方式:/* */                和// 。那上面3 条注释对不对呢?建议你 
亲自在编译器中测试一下。上述前3条注释都是正确的,最后一条不正确。 


    A),有人认为编译器剔除掉注释后代码会被解析成inti,所以不正确。编译器的确会将注 
释剔除,但不是简单的剔除,而是用空格代替原来的注释。再看一个例子: 


    /*这是*/#/*一条*/define/*合法的*/ID/*预处理*/replacement/*指*/list/*令*/ 


你可以用编译器试试。 


    B),我们知道双引号引起来的都是字符串常量,那双斜杠也不例外。 


    C),这是一条合法的注释,因为\是一个接续符。关于接续符,下面还有更多讨论。 


    D),  前面说过注释会被空格替换,那这条注释不正确就很好理解了。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值