问题来源:《C陷阱与缺陷》

练习1-1.某些C编译器允许嵌套注释。请写一个测试程序,要求:无论是对允许嵌套注释的编译器,还是对不允许嵌套注释的编译器,该程序都能正常通过编译(无错误消息出现),但是这两种情况下程序执行的结果却不相同。

提示:被双引号括起来的字符串中,注释符/*属于字符串的一部分,而在注释中出现的双引号又属于注释的一部分。

我的解答如下:

首先我们必须找一串符号序列,它满足在不同的编译器下都是合法的,但意义不同。而要形成嵌套注释,则这串序列必须至少含有这样的字符:/*/**/*/。

我们先从/*/**/开始讨论。对允许嵌套注释的编译器,/*/**/后面的字符都是注释的一部分,而对不允许注释的编译器,这就是一个完整的注释了。

然后我们在后面加上"*/",变成/*/**/"*/"。对允许嵌套注释的编译器,/*/**/"*/"等效于一个引号;对不允许注释的编译器/*/**/"*/"等效于字符串"*/"。此时对允许嵌套注释的编译器无法通过编译,即剩下一个引号,我的想法是把这个引号给注释掉,由于是在C++的编译器,我直接就在引号前面添加了两干,变成/*/**/"*///",有点投机取巧的意味。

但用C的注释符也是可以的,在/*/**/"*/"后面加上/*"变成/*/**/"*/"/*"。对允许嵌套注释的编译器,/*/**/"*/"/*"等效于字符串"/*";对不允许注释的编译器,/*/**/"*/"/*"等效于字符串和一个不完整的注释"*/"/*"。

最后可以在后面加上/**/完成注释。故最终的字符串为/*/**/"*/"/*"/**/。

在作者的解答里面有一个很神奇神奇的答案:/*/*/0*/**/1

大家就自己分析下啦!挺有趣的!

以下是最终写的程序的代码,包含以上提到的几种方案,很简单

#include

#include

int main()

{

char* str=("hello world");

/*/**/str="*///hello world";

printf("%s\n",str);

str=/*/**/"*/"/*"/**/;

printf("%s\n",str);

int i = /*/*/0*/**/1;

printf("%d\n",i);

system("pause");

return 0;

}

c语言注释不能嵌套什么意思,C语言嵌套注释问题相关推荐

  1. c++ doxygen 注释规范_[代码规范]Go语言编码规范指导

    本规范旨在为日常Go项目开发提供一个代码的规范指导,方便团队形成一个统一的代码风格,提高代码的可读性,规范性和统一性.本规范将从命名规范,注释规范,代码风格和 Go 语言提供的常用的工具这几个方面做一 ...

  2. [GO语言基础] 二.编译运行、语法规范、注释转义及API标准库知识普及

    作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.前文介绍了什么是GO语言 ...

  3. c语言程序设计删除,C程序设计语言练习1-23 编写一个删除C语言程序中所有的注释语句...

    C程序设计语言练习1-23 编写一个删除C语言程序中所有的注释语句,要正确处理带引号的字符串与字符常量,以C语言中,注释不允许嵌套. 本程序运行后,将要求用户输入一个当前目录下的C源码程序文件名,读取 ...

  4. c语言注释符号 井号,读c语言深度剖析 -- 符号 注释符号

    标准C语言的基本符号 ,逗号  >右尖括号  . 圆点 !感叹号   :分号   | 竖线   :冒号  /斜杠   ?问号  \反斜杠 '单引号  ~波折号  "双引号  #井号   ...

  5. c语言注释的作用文百,C语言注释-C语言行注释-C语言注释块注释-嗨客网

    C语言注释教程 用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性.同时,注释也是一个程序员必须要具有的良好编程习惯.我们应该首先将自己的思想通过注释先整理出来,再用代码去体现. 在 C语言注 ...

  6. R语言可视化分面图、多变量分组嵌套多水平t检验、可视化多变量分组嵌套多水平分面条形图(faceting bar plot)并添加显著性水平、添加误差条

    R语言可视化分面图.多变量分组嵌套多水平t检验.可视化多变量分组嵌套多水平分面条形图(faceting bar plot)并添加显著性水平.添加误差条 目录

  7. c语言程序中的注释必须单独占一行,C语言习题第一章

    以下叙述中错误的是() A.一个C语言程序只能有一个主函数 B.C语言编写的每个函数都可以进行独立的编译并执行 C.C语言编写的函数都可以作为一个独立的源程序文件 D.C语言编写的函数源程序,其文件名 ...

  8. C语言编程>第一周 ⑦ 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示

    例题:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示. 代码如下: /*程序分析:利用条件运算符,如(a>b)?a:b的 ...

  9. 数据库SQL语言学习--上机练习2(连接查询 嵌套查询)(持续更新中)

    数据库SQL语言学习--上机练习2(连接查询 嵌套查询)(持续更新中) 上机练习2 1.              启动SQL Server 2008中的 SQL Server Management ...

最新文章

  1. java web方面杂志_环境方面比较好发的期刊_全球环境类最好的期刊_环境领域top期刊...
  2. 【bzoj4842】[Neerc2016]Delight for a Cat 线性规划与网络流
  3. 搭建Python+Django开发环境
  4. 面向对象编程之生成器与迭代器
  5. 未正确安装master data services_GP数据库安装
  6. 论富客户端程序的webservice实现
  7. Golang heap源码简单走读
  8. 贝叶斯网络学习Python环境搭建(pgmpy)
  9. AndroidStudio_android中实现ImageView的清空操作---Android原生开发工作笔记235
  10. 爬取 wallhaven图片到本地壁纸库
  11. 如何创建免费的Hyper-V Server故障转移集群
  12. 电脑不香吗?我在手机上装Python我图什么?
  13. Python创建空DataFrame及添加行数据
  14. 主流数据库以及适用场景思维导图
  15. http://www.feedsky.com/help_publishwidget.html
  16. 腾讯研究院发布《2021数字科技前沿应用趋势》
  17. 微信网页扫码登录与微信公众号授权登录的区别
  18. 线程池 ExecutorService 的使用例子
  19. php文件如何上传到服务器,php文件怎么上传到云服务器
  20. Electron教程(七)结语

热门文章

  1. 计算机的供电方式,电脑主板电源供电方式
  2. 安装webpack powershell出现 Set-ExecutionPolicy : 对注册表项“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell
  3. 不同方式实现IP访问限制
  4. web性能压力测试工具材料
  5. 信息系统项目管理师必背核心考点(二十一)可交付成果
  6. matlab测量直流母线上的电压,直流母线
  7. 【离散数学】编程练习:求偏序集中的极大元与极小元
  8. asp.net打开新标签页
  9. tensor 增加维度_tensor 维度变换
  10. [数据仓库复习] —— 维度数据模型