分号不是个“随便的人”
分号是个很不起眼的东西,但在C语言编程里面,它的作用不可忽视,多写与漏写都会造成不可预料的错误,下面就列举一些常见的错误。
1、多谢了分号
if或while语句块内如果只有一条语句,那么可以省略大括号的书写,然而,当他们的条件判断框后面不小心加了一个”;”时,会使本来想要在if或while条件成立时执行的语句替换成了一个空语句,把原来要执行的语句“挤到了”if或while语句块外面,使其不管if或while的条件成立与否,都会执行
int main()
{int a = 0;if (a == 0);printf("a = %d\n", a);printf("a != 0, a = %d\n", a);system("pause");return 0;
}
上面程序的本意是当a = 0时,输出a = 0;当a != 时,输出a != 0,a = n(n是此时a的值)
但因为if的判断框(一对())后面多写了一个“;”,编译器就把”;“这个空语句当做了它后面要执行的语句,使printf(“a = %d\n”, a);无论如何都会执行,改变了程序的初衷。
2、漏写了分号
①当一个自定义的类型在定义时忘了在结尾加上分号,且它的下面跟的是一个没有写返回值的函数时,那么编译器会误把这个自定义的类型当成函数的返回值类型,造成不可预料的错误
struct P
{char c;int i;double d;
}
fun()
{printf("fun()是一个无参无返回值的函数\n");return;
}
上面这段代码,函数fun()在设计时是不给返回值的,然而因为定义结构体类型时忘记在结尾处加分号了,使此结构体类型成了函数fun()的返回值类型。
②少了一个分号使函数的返回值发生改变,并对函数逻辑发生错误。
int a = 0;if (a == 0)returna += 10;a -= 10;a *= 10;a /= 10;
假定上面的代码是一个函数的一部分,那么本意是当a = 0时,函数直接返回调用函数,a != 0 时,函数执行return下面的四条语句,但因为return后面漏写了分号,错误的把a += 10作为返回值,使a = 0时返回10,当a != 0时,函数也只能执行a += 10/下面的三条语句。使函数的逻辑发生了很大的改变。
分号不是个“随便的人”相关推荐
- 公司随便开除人能够解决问题吗?(转载)
转载于:https://www.cnblogs.com/dylancao/p/10658276.html 最近和别的公司打交道多了,就遇到很多事情,最近和两个创业公司打交道的时候,都遇到了相同的问题, ...
- 公司随便开除人能够解决问题吗?
最近和别的公司打交道多了,就遇到很多事情,最近和两个创业公司打交道的时候,都遇到了相同的问题,这个问题太典型了,所以拿出来和大家分享一下. 两家公司都是初创型的公司,并且都是技术型的,创始人都是业务出 ...
- 怎么会这样!超声刀两年后面部塌陷,超声刀失败可以补救吗,让人头大!不要啊
怎么会这样!超声刀两年后面部塌陷,超声刀失败可以补救吗,让人头大!不要啊 近年来美容的超声刀的发展如火如荼,广大爱美的小哥哥小姐姐也对这种特殊的"刀"跃跃欲试,于是也就伴随着出现了 ...
- 技术水平的确很高,正规公司为什么还是不录用这些人(技术水平不高的更不可能)
时间宝贵的.建议直接看评论,评论往往比文章更精彩!反对的.希望不要点击.阅读量过大导致总想写上几篇文章上来,不能怪总发表首页文章. 最近2个月公司一直在招聘.NET开发人员,接下来的一年里,公司也会一 ...
- 如何使人变得心胸宽广
我觉得要做事,先做人!要做人,心必宽. 这是原文连接:http://sexwithwangting.blog.163.com/blog/static/424962642009102143743965/ ...
- 如何变成一个有趣的人
我本想写如何变成有钱的人,但是这个似乎没资格讨论这个话题,因为读到一篇文章关于这个话题,于是我想对这个话题谈谈我的见解. 要说怎么有趣,先要知道什么是有趣,变成有趣的人 ,你觉得自己是吗? 一 怎么做 ...
- 技术水平的确很高,正规公司为什么还是不录用这些人(注技术不好的更没戏)
时间宝贵的.建议直接看评论,评论往往比文章更精彩!反对的.希望不要点击.阅读量过大导致总想写上几篇文章上来,不能怪总发表首页文章. 最近2个月公司一直在招聘.NET开发人员,接下来的一年里,公司也会一 ...
- 初来乍到,IT职场人,有些黑话要先了解(IT行业常用术语缩写)
文章目录 日常黑话 工作黑话 日常黑话 OKR:Objectives and Key Results,直译为目标和关键成果.OKR可以理解为是一种自下而上的管理方式,员工制定目标,然后去执行,员工的目 ...
- 牵了手就不要随便分手
牵了手就不要随便分手 本帖子共有回复 607 篇 作者:渝 (2005-12-12 17:22) 回复留言 1 回复:牵了手就不要随便分手 春蚕破壳 ...
最新文章
- 提高页面载入速度简单易行的四个办法。
- java中static、final、static final的区别
- class12_pack_grid_place 放置位置
- 状态压缩 之 UVA 10944 - Nuts for nuts..
- 28 PP配置-生产车间控制-工序-定义报工屏幕默认值
- 羡慕不来!华为高价招揽人才:应届博士年薪最高201万元
- linux 云主机安装方法,虚拟主机linux服务器安装教程
- mysql config type_mysql_config_editor用法举例
- 【CCCC】L2-001 紧急救援 (25分),,Dijkstra标准模板(多路径,最大点权和路径打印)
- BZOJ 2186 SDOI2008 沙拉公主的困惑 数论
- 被替换的项目不是替换值长度的倍数_机器学习中处理缺失值的9种方法
- 「开源资讯」浏览器中可以深度学习的框架Paddle.js 1.0 发布
- LaTeX 阿拉伯语
- react 如何引入打印控件 CLodop
- 基于MATLAB的车牌识别实现
- Windows命令之tracert命令
- matlab如何找出相似的图,图像相似性搜索的MATLAB实现
- 备战金九银十!2022Java面试必刷461道大厂架构面试真题汇总+面经+简历模板都放这了,注意划重点!!
- 如何简单快速去掉电脑桌面图标上的小箭头
- Qt5示例addressBook源码解析
热门文章
- 容器环境自建数据库、中间件一键接入阿里云 Prometheus 监控
- AliOS Things 3.0应用笔记:摄像头配网 + 钉钉群通知 + 天气显示
- 阿里云全球首推流量型独享虚拟主机新规格,网络访问速度最高提升400%
- Web3.0 兴起之际,元宇宙这杯羹怎么分?
- 泪目!连拿3份 offer,AI 程序员求职经历火爆 IT圈!
- Nutanix,在转型的道路上越走越远 | 人物志
- 云存储精华问答 | 如何选择混合云提供商?
- Docker精华问答 | 如何让一个容器连接两个网络?
- 云漫圈 | 革命版互联网公司虐恋大戏,周一拿去怼业务!
- context的使用