• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 深入理解C语言的逻辑控制

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

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c语言逻辑运算符,c语言逻辑运算,c语言中逻辑运算符,c语言逻辑或,c语言逻辑表达式等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文对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、if语句

if (条件1)
//代码块1
else
//代码块2

</div>

对应goto:

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

</div>

3、?: 和if else是等价的。

只不过if语句为代码块,?:为表达式。

变量= (条件1)? 表达式1:表达式2;
</div>

goto版本:

t = 条件1;
if (t为真)
goto true;
//变量=表达式2
goto finish;
true:
//变量=表达式1
finish:

</div>

注意:?:里面的表达式尽量简单,过于复杂的话,改用if语句实现,这样方便调试。

4、switch-case

switch (条件取值变量)
case 元素1 :
//语句块1;
break;
case 元素2:
//语句块2;
break;
...
case 元素N
//语句块N;
break;
default:
//默认处理。
break;
}

</div>

goto版本:

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

</div>

5、for语句

for (初始化语句;判断语句;迭代语句)
//循环语句块

</div>

goto版本:

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

</div>

6、while语句

while(条件为真)
//代码块
//迭代块

</div>

对应goto版本:

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

</div>

7、do-while语句

do {
//语句块1
//迭代块1
} while (条件为真)

</div>

goto版本:

loop:
//语句块1
//迭代块1
if (条件为真) goto loop;
</div>

C语言的goto同汇编语句jmp系列指令逻辑上是完全一致的。

注意:

1、 关于条件,有个经典的逻辑代数公式:
摩根公式:
!(A && B) = (!A) || (!B)
建议,对复杂逻辑,手动画代数运算表
A B 结果
0 0 ?
0 1 ?
1 0 ?
1 1 ?
并保证单体测试的全覆盖。

2、 逻辑操作和位操作是2组,需要区分开来。
与 或 反
逻辑: && || !
位: & | ~ ^ (异或)

3 强烈推荐在写代码前,在纸上画完整的流程图,梳理自己的设计思路。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C语言逻辑运算符知识整理
  • C语言运算符的优先级和结合性实例详解
  • 深入理解C语言的逻辑控制
  • C语言运算符及其优先级汇总表口诀

相关文章

  • 2017-05-28使用C++进行Cocos2d-x游戏开发入门过程中的要点解析
  • 2017-05-28C语言使用openSSL库AES模块实现加密功能详解
  • 2017-05-28C++中字符串以及数组和指针的互相使用讲解
  • 2017-05-28常用的C语言排序算法(两种)
  • 2017-05-28VC对自定义资源加密解密(AES)的详解
  • 2017-05-28如何用C语言、Python实现栈及典型应用
  • 2017-05-28关于c++ 智能指针及 循环引用的问题
  • 2017-05-28一个快速排序算法代码分享
  • 2017-05-28C语言文件操作函数freopen详细解析
  • 2017-05-28C语言基础之格式化输出控制长度

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++11的for循环,以及范围Range类的简单实现
    • C/C++数据对齐详细解析
    • 详解数据结构C语言实现之循环队列
    • c++实现二叉查找树示例
    • C++Primer笔记之顺序容器的使用详解
    • C语言中qsort函数用法实例小结
    • 深入解析C++中的字符数组和处理字符串的方法
    • 最小生成树算法C语言代码实例
    • C++多态的实现机制深入理解
    • 详谈C++何时需要定义赋值/复制构造函数

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有