C语言初学(四)

bite集训营

6/2

每周一点课程回顾以及知识总结(对于别人真的没什么用 :-(

1、在if判断语句当中,两个等号表示相等,一个等号表示赋值,所以对于一些资深的编程人员,在编码时,会习惯将if语句括号内的常量写在等号的左边,以便排查错误(图中单等号报错,双等号正常运行)

2、不加花括号时,if else 默认只能控制一条语句,若需要控制多个语句,需要加花括号。图中if判断条件只对第一行printf起到作用,而对第二条没有约束。加了花括号之后,才能控制两条printf语句

3、有的if判断条件控制的语句尽管看起来有很多行,但系统只会执行其中一种结果,所以实际上只有一条语句;其次系统会根据顺序一路执行下去,当第一个判断条件不满足时,此时系统已经默认输入的值大于18,因此第二个()内的判断条件只需满足小于44即可,同理第三个()内的判断条件

4、多个关系运算符连用可能会引起问题,例如 if(i<j<k),如果这行代码出现在程序中,部分人一开始可能会认为这行代码的意思正如数学上所表达的那样,但其实对于C语言而言,真正的执行方式是:系统先会判断 i 是否小于 j ,若成立,前一个条件输出 1 ,否则输出 0 。再将输出的 0/1 与 k 进行比较,大于 k 输出 1, 小于 k 输出 0。若要进行连续比较,正确的输入方式为:(j > i && j < k)

5、C语言中,当前一个判断条件已然成立,则会跳过后一个判断条件,这种情况被称为短路。

注:0为假,非0为真

①:与判断

分析:先将a做‘与判断’,再执行‘a++’,因为a的值为0,所以无论后续的值为多少,输出总为0,因此跳过a++后面的判断语句,因此最终输出结果如图所示。

分析:a改为1后,同样先将a做‘与判断’,再执行‘a++’,因为a的值为1,所以将继续执行后续判断条件,直到出现第一个0,所以输出结果如图所示

分析:b改为0后,第一个判断方式与上一个类似,再判断第二个条件是,因为++b 是先执行’累加’操作,再执行 ’与判断‘,b累加后为1,因此继续执行后续判断。

分析:若b改为-1后,后续判断又会被短路

②:或判断

分析:a值为0,所以或判断语句继续执行,从图可知,b为非0,0与非0‘相或’为1,因此无论d的值为多少,’或语句‘中只要有一个为真,结果就为真,所以后续判断语句被短路,因此输出结果如图。

分析:若将a改为1之后,第一个条件即为非0,所以无论后续的值如何,‘或语句’中只要有一个为非0,那么结果就是1,因此后续所有判断全被短路,输出结果如图所示。

6、Switch语句判断完毕后,会从满足条件的case进入,一路执行下去,所以每个case条件后要加break,若所有case条件都不成立,则会执行default语句。Switch 后可以是整型,也可以是字符,因为字符在内存中是以ASCII码值存贮的,但switch中一定不能是浮点型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值