c语言注释不能嵌套什么意思,C语言嵌套注释问题
问题来源:《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语言嵌套注释问题相关推荐
- c++ doxygen 注释规范_[代码规范]Go语言编码规范指导
本规范旨在为日常Go项目开发提供一个代码的规范指导,方便团队形成一个统一的代码风格,提高代码的可读性,规范性和统一性.本规范将从命名规范,注释规范,代码风格和 Go 语言提供的常用的工具这几个方面做一 ...
- [GO语言基础] 二.编译运行、语法规范、注释转义及API标准库知识普及
作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.前文介绍了什么是GO语言 ...
- c语言程序设计删除,C程序设计语言练习1-23 编写一个删除C语言程序中所有的注释语句...
C程序设计语言练习1-23 编写一个删除C语言程序中所有的注释语句,要正确处理带引号的字符串与字符常量,以C语言中,注释不允许嵌套. 本程序运行后,将要求用户输入一个当前目录下的C源码程序文件名,读取 ...
- c语言注释符号 井号,读c语言深度剖析 -- 符号 注释符号
标准C语言的基本符号 ,逗号 >右尖括号 . 圆点 !感叹号 :分号 | 竖线 :冒号 /斜杠 ?问号 \反斜杠 '单引号 ~波折号 "双引号 #井号 ...
- c语言注释的作用文百,C语言注释-C语言行注释-C语言注释块注释-嗨客网
C语言注释教程 用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性.同时,注释也是一个程序员必须要具有的良好编程习惯.我们应该首先将自己的思想通过注释先整理出来,再用代码去体现. 在 C语言注 ...
- R语言可视化分面图、多变量分组嵌套多水平t检验、可视化多变量分组嵌套多水平分面条形图(faceting bar plot)并添加显著性水平、添加误差条
R语言可视化分面图.多变量分组嵌套多水平t检验.可视化多变量分组嵌套多水平分面条形图(faceting bar plot)并添加显著性水平.添加误差条 目录
- c语言程序中的注释必须单独占一行,C语言习题第一章
以下叙述中错误的是() A.一个C语言程序只能有一个主函数 B.C语言编写的每个函数都可以进行独立的编译并执行 C.C语言编写的函数都可以作为一个独立的源程序文件 D.C语言编写的函数源程序,其文件名 ...
- C语言编程>第一周 ⑦ 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示
例题:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示. 代码如下: /*程序分析:利用条件运算符,如(a>b)?a:b的 ...
- 数据库SQL语言学习--上机练习2(连接查询 嵌套查询)(持续更新中)
数据库SQL语言学习--上机练习2(连接查询 嵌套查询)(持续更新中) 上机练习2 1. 启动SQL Server 2008中的 SQL Server Management ...
最新文章
- java web方面杂志_环境方面比较好发的期刊_全球环境类最好的期刊_环境领域top期刊...
- 【bzoj4842】[Neerc2016]Delight for a Cat 线性规划与网络流
- 搭建Python+Django开发环境
- 面向对象编程之生成器与迭代器
- 未正确安装master data services_GP数据库安装
- 论富客户端程序的webservice实现
- Golang heap源码简单走读
- 贝叶斯网络学习Python环境搭建(pgmpy)
- AndroidStudio_android中实现ImageView的清空操作---Android原生开发工作笔记235
- 爬取 wallhaven图片到本地壁纸库
- 如何创建免费的Hyper-V Server故障转移集群
- 电脑不香吗?我在手机上装Python我图什么?
- Python创建空DataFrame及添加行数据
- 主流数据库以及适用场景思维导图
- http://www.feedsky.com/help_publishwidget.html
- 腾讯研究院发布《2021数字科技前沿应用趋势》
- 微信网页扫码登录与微信公众号授权登录的区别
- 线程池 ExecutorService 的使用例子
- php文件如何上传到服务器,php文件怎么上传到云服务器
- Electron教程(七)结语
热门文章
- 计算机的供电方式,电脑主板电源供电方式
- 安装webpack powershell出现 Set-ExecutionPolicy : 对注册表项“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell
- 不同方式实现IP访问限制
- web性能压力测试工具材料
- 信息系统项目管理师必背核心考点(二十一)可交付成果
- matlab测量直流母线上的电压,直流母线
- 【离散数学】编程练习:求偏序集中的极大元与极小元
- asp.net打开新标签页
- tensor 增加维度_tensor 维度变换
- [数据仓库复习] —— 维度数据模型