【C语言 保姆级教学】萌新必看!关于代码风格,一个良好的习惯可以使自己的代码变得更加简洁易懂并且不容易出错!(悬空else以及if判断语句的坑)

这里是IT萌新Miaotty~致力于帮助像我一样的小白们尽快入门,毙掉或者避掉那些只有小白才懂的坑......   

今天浅讲一下关于代码风格问题,这个常常导致小白们陷入有bug却如何也找不到的困境

前期一定要注意习惯的培养,对于面试等场合也可以给面试官留下好印象~

咱们从最典型的讲起

一、分支语句中的悬空else

你可能会问,什么叫悬空else?我们不着急下定义,可以先从一个错误实例看起~

看到这个程序,大家可以想一想这个输出结果会是什么呢?思考一下再看结果哦~

结果是什么也不输出!

大家为什么会产生其他错误答案呢?

本质上是将else的匹配对象搞混了。

这里的程序给大家挖了个坑,因为故意将else将第一个if对齐,让大家自然而然的觉得这个else的匹配对象就是那个if,但是其实else的匹配对象是距离他最近的if!

这个问题的产生本质上就是不良好的代码书写习惯造成的,下面展示来两种较为舒适且较为不容易出错的形式供大家借鉴~

以上就是悬空else问题。

(推荐使用大括号,形成对应的代码块就清晰啦~)

二、if语句中的大小坑

1.判断中的小坑

先看一个if语句

if(8<=x<18)

大家觉得这个语句有没有问题呢?

是的,聪明的你应该察觉到了,这个如果x比8大压根就是恒成立!

为什么呢?

我们来分析一下这个代码语句运行逻辑:(x>8的前提下)

先判断前半句:8<=x  显然成立。

OK问题就出在下一步了,下一步运行并不是再拿x和18进行比较滴,因为前半句已经判断为真,所以,下一步就成了“1”与18进行比较(补充知识:计算机识别时1为真,0为假,此刻判断前半句为真,故当做1处理),所以后半句必然成立!

这个也是书写不规范造成的,正确形式可以采取如下形式:

if(x>=8 & x<18)

这样就清楚明 了了吧~(&在这里是数学里“且”的意思)

2.细节决定成败

上eg:

if(a=5)

这个错误我单独摆出来,大家应该一眼都能看出来。if里面应当是判断语句双等号(==)

但是这个错误厉害就厉害在这条if语句没有任何语法错误,也就是说编译器识别不出来!

试想如果我们写了一大堆代码,最后发现运行失败但是没有报错,你绝不绝望?

绝望死了。。。

这个问题也是书写习惯的问题,我们可以换一种书写方法可以完全避免这个错误!

if(5==a)

哎,你看这样写妙在哪里,他妙就妙在如果写反5=a这个是有语法错误的!一经写错,编译器自动识别出来!这样就完美的避免了这个可能引起大问题的错误!

OK,今天关于代码风格的问题就到这里啦~这次的内容有借鉴一本非常棒的书《高质量的C/C++编程》,这本书有一个章节很详细的写了这方面的问题,绝对意义上的好书!如果大家有需要就在本篇文章下留言叭,我看到会无偿分享电子版给大家的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值