源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

深入理解C语言的逻辑控制

  • 时间:2021-07-04 13:28 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:深入理解C语言的逻辑控制
本文对C语言的逻辑控制做一番较为深入的探讨,一般来说C语言的逻辑控制语句主要有如下的7种: 1、 goto 最强大,但一般只在特殊环境下使用。 2、 if else 3、 ?: 4、 switch case 5、 for 6、 while 7、 do while 自从dijkstra的论文Go To Statement Considered Harmful以后,C语言代码很少看到goto了。(一般用在多次资源分配的错误处理上) 但,从计算机的角度来说,缺少goto(jmp指令)还真没法干活。其实,goto是最符合我们的设计流程图的。 将一个流程图用goto来实现也最直观。goto能真正让我们做到心之所动,剑之所至。 接下来,分别考虑将2-7转化为对应的goto语言版本(等价于转化为对应汇编版本)。 2、[b]if语句[/b]
if (条件1)
//代码块1
else
//代码块2

对应goto:
t = 条件1;
if (t为真)goto true;
//代码块2
goto finish
true:
//代码块1
finish:

3、[b]?: 和if else是等价的[/b]。 只不过if语句为代码块,?:为表达式。
变量= (条件1)? 表达式1:表达式2;
goto版本:
t = 条件1;
if (t为真)
goto true;
//变量=表达式2
goto finish;
true:
//变量=表达式1
finish:

注意:[b]?:里面的表达式尽量简单,过于复杂的话,改用if语句实现,这样方便调试。[/b] 4、[b]switch-case[/b]
switch (条件取值变量)
case 元素1 :
//语句块1;
break;
case 元素2:
//语句块2;
break;
...
case 元素N
//语句块N;
break;
default:
//默认处理。
break;
}

goto版本:
跳转表={标签1,标签2,...,标签N }
goto 跳转表[元素index]
//标签1:
//语句块1
goto Finish
//标签2:
//语句块2
goto Finish
...
//标签N:
//语句块N
goto Finish
default:
//默认处理。
Finish:

5、[b]for语句[/b]
for (初始化语句;判断语句;迭代语句)
//循环语句块

goto版本:
//初始化语句;
if (判断语句为否)
goto Finish;
loop:
//循环语句块
//迭代语句
if (判断语句为真)
goto loop;
Finish:

6、[b]while语句[/b]
while(条件为真)
//代码块
//迭代块

对应goto版本:
loop:
t = 条件
if (不为真) goto Finish;
//代码块
//迭代块
Finish:

7、[b]do-while语句[/b]
do {
//语句块1
//迭代块1
} while (条件为真)

goto版本:
loop:
//语句块1
//迭代块1
if (条件为真) goto loop;
C语言的goto同汇编语句jmp系列指令逻辑上是完全一致的。 注意: 1、 关于条件,有个经典的逻辑代数公式: 摩根公式: !(A && B) = (!A) || (!B) 建议,对复杂逻辑,手动画代数运算表 A B 结果 0 0 ? 0 1 ? 1 0 ? 1 1 ? 并保证单体测试的全覆盖。 2、 逻辑操作和位操作是2组,需要区分开来。 与 或 反 逻辑: && || ! 位: & | ~ ^ (异或) 3 强烈推荐在写代码前,在纸上画完整的流程图,梳理自己的设计思路。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部