C和C++从零开始系列(三)

前边介绍了C和C++的if条件判断。普通的条件判断,使用if-else 就能够完成。如果可能的条件太多,那你需要在代码中写下一大段的 if-else if-else if ....else.

如果我一气呵成,还好,基本逻辑不太会有问题。如果中途被人打断了,嗯,我需要重新再想,刚刚写到第几个判断了?

接下来,需求变了一下,产品经理、客户说,你加一个新的判断,这种情况下和之前的第N种情况一样,都执行**操作。好吧,**操作需要的代码有只有一句,嗯,我可以加个 els if就行。"✔"

真的吗?**操作需要10行代码,本来 if-else...就有100行了,再加10行。慢慢的,需求变更多了,每次加10行,不久之后我的代码就没法看了。

嗯, if 支持多条件的,我用 "||" 把多个条件连接起来就行。而且我还充分利用了短路求值的特性,将出现几率大的放在前边。试想,在100行的文件中,满足条件A 和A1的内容需要调用 f 函数。满足A的几率是8%,满足A1的记录是20%,那我把 A1的判断放在A 之前

1 if (A || A1)
2 ....
3 
4 if (A1 || A)
5 ...

在这种几率下,第二种写法比第一种快很多。嗯,不错,充分利用语言特性了。

如果分支太多,出错的几率会增大。那我可能需要改进代码了,不再使用if-else这种情况来实现条件判断了。

大部分程序语言都支持 switch 作为条件判断。

1         switch(x)
2         {
3         case 1:
4                 ......;
5                 break;
6         case 2:
7                 .......;
8                 break;
9         default:

以上是C语言的 switch 条件语句。当出现文章开头的情况,比如1和11,使用同样的逻辑来处理。我们的代码如下:

 1         switch(x)
 2         {
 3         case 1:
 4         case 11:
 5                 ...;
 6                 break;
 7         case 2:
 8                 ...;
 9                 break;
10         default:

这样出错的记录大大降低了。

我们注意到,每个case 条件都使用 break; 如果不加break, 程序会接下来执行下一个case 情况下的语句。

初学者一定要牢记,如果使用switch-case 条件判断,切记break。

利用这一特性,我们可以灵活处理一下情况:

1. 满足1的情况时,需要执行语句A,B,C

2. 满足2的情况时,需要执行语句B。

我们的代码可以这么写

 1         switch(x)
 2         {
 3         case 1:
 4                 语句A;
 5                 语句C;
 6         case 2:
 7                 语句B;
 8                 break;
 9 
10 ............................

当然,现代面向对象程序设计,设计模式的出现,大家都会避免使用 if-else 和 switch-case 了。

但毕竟,条件判断的两种基础方式还是需要掌握的。

猜你喜欢

转载自www.cnblogs.com/danielhu/p/12077893.html
今日推荐