C和C++从零开始系列(二)
今天说一下 C和C++ 的if 条件语句。
在实际编程中,会经常有逻辑判断,比如,输入的数值参数中,如果是奇数,输出This is uneven. 如果是偶数,输出 This is even.
我们在C中这么来写:
int main()
{
int x;
printf("Please input a number x=");
scanf("%d", &x);
if (x % == )
printf("This is even\n");
else
printf("This is uneven\n");
}
第6行 使用 if 判断,如果 % 2 等于0,说明是偶数。
第8行,else 和第6行的 if 配对,不满足 %2 等于0,说明是偶数。
这里有个题外的基础点, "%" 是模运算,取余数的意思。
1. if 条件使用 () 封装
2. 如果条件语句后只有一句代码,可以不用{} 封装,如果有多条语句,需要使用 {} 来封装。
3. 如果有多种可能,需要使用 else if 后接条件。
接下来,我们要对 if 条件升级。如果输入的数字是偶数,并且小于10,输出This is even less than 10
如果输入数字是奇数并且小于20,输出This is uneven less than 20
否则,输入 Other situation.
代码如下:
int main()
{
int x;
printf("Please input a number x=");
scanf("%d", &x);
if (x < && x % == )
printf("This is even less than 10\n");
else if (x < && x % != )
printf("This is uneven less than 20\n");
else
printf("Other situation\n");
}
1. 多个条件在一起判断,要求都满足的时候,使用 && 连接,如果满足一个即可,使用 || 连接。
2. 如果是 &&, 第一个条件求值为false,第二个表达式不再执行
3. 如果是 ||, 第一个条件求值为true,第二个表达式不再执行
以上特性被称为短路求值(short evaluation). Visual Basic 不属于短路求值语言。
举个例子,
if (x > && x++)
以上代码中,如果 x 是下于10 的值,x++ 这句语句不会被执行
if (x > || ++x == )
以上代码在 x 等于2时,表达式求值为真,会执行 if 分支的语句。
短路求值的应用非常广泛,灵活使用短路求值的特性,能提高程序效率。
第二个例子中,如果 条件语句需要调用别的函数计算,
if (fun1(x) && fun2(x))
如果 fun2 的计算逻辑比 fun1 简单,那么强烈建议把它写为
if (fun2(x) && fun1(x))
如果 fun2的结果返回为 false 时, fun1 不再被调用。这样程序执行效率会更高。
特别是有对指针变量的判断时
if (p != NULL && fun1(p))
如果 fun1 函数的作者没有对空指针的判断,将以上的顺序调换会引起错误。
C和C++从零开始系列(二)的更多相关文章
- Nordic NRF51822 从零开始系列(外部设备片—MPU6050DMP驱动的移植)
一.硬件准备 (1)开发板和软件参看 Nordic NRF51822 从零开始系列(一)开发环境的搭建 (2)mpu6050模块 二.前置知识 ...
- 前端构建大法 Gulp 系列 (二):为什么选择gulp
系列目录 前端构建大法 Gulp 系列 (一):为什么需要前端构建 前端构建大法 Gulp 系列 (二):为什么选择gulp 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gul ...
- WPF入门教程系列二十三——DataGrid示例(三)
DataGrid的选择模式 默认情况下,DataGrid 的选择模式为“全行选择”,并且可以同时选择多行(如下图所示),我们可以通过SelectionMode 和SelectionUnit 属性来修改 ...
- Web 开发人员和设计师必读文章推荐【系列二十九】
<Web 前端开发精华文章推荐>2014年第8期(总第29期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- Web 前端开发人员和设计师必读文章推荐【系列二十八】
<Web 前端开发精华文章推荐>2014年第7期(总第28期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- Web 开发精华文章集锦(jQuery、HTML5、CSS3)【系列二十七】
<Web 前端开发精华文章推荐>2014年第6期(总第27期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- Web 前端开发人员和设计师必读精华文章【系列二十六】
<Web 前端开发精华文章推荐>2014年第5期(总第26期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十三】
<Web 前端开发精华文章推荐>2014年第2期(总第23期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十二】
<Web 前端开发精华文章推荐>2014年第一期(总第二十二期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML ...
随机推荐
- [JQuery] JQuery学习笔记
1.2019年10月20日14:43:48 学习HOW2J. 2.JQuery是一个javascript的框架,是对javascript的一种封装, 通过JQuery可以非常方便的操作html的元素 ...
- 微擎使用post提交,并显示弹出层
微擎使用post提交,并显示弹出层 function changeStatus(id, status) { // 提交数据 var id = parseInt(id); var status = pa ...
- nyoj 255-C小加 之 随机数 (map)
255-C小加 之 随机数 内存限制:64MB 时间限制:3000ms 特判: No 通过数:15 提交数:18 难度:1 题目描述: ACM队的“C小加”同学想在学校中请一些同学一起做一项问卷调查, ...
- 构建 DNS 主从复制服务器
一.主节点配置 1.yum install bind -y 安装 DNS 服务 2.vim /etc/named.conf 编辑 DNS 的配置文件 3.named-checkconf 检查配置文件 ...
- I/O多路复用模型
背景 在文章<unix网络编程>(12)五种I/O模型中提到了五种I/O模型,其中前四种:阻塞模型.非阻塞模型.信号驱动模型.I/O复用模型都是同步模型:还有一种是异步模型. 想写一个系列 ...
- three.js使用gpu选取物体并计算交点位置
光线投射法 使用three.js自带的光线投射器(Raycaster)选取物体非常简单,代码如下所示: var raycaster = new THREE.Raycaster(); var mouse ...
- 2019-10-16,sudo提权漏洞(CVE-2019-14287)实现
sudo是linux系统命令,让普通账号以root身份执行某些命令,比如,安装软件,查看某些配置文件,关机,重启等,如果普通用户需要使用sudo需要修改配置文件,/etc/sudoers,将sudo使 ...
- 2019-10-12,html+php+mysql简单留言板,作业
php+mysql简易留言板,实现注册,登录,注销,查看留言,删除留言 1,index.html登录页面 代码: <!doctype html> <html> <head ...
- 迈进java初中级程序员分水岭是否合格?十个题告诉你!
前言 不论你是职场新人还是步入职场N年的职场新人大哥大~当然这个N<3~,我能担保你答不对这十个题~不要问我为什么这么自信~,这些个题还是"有水平"的javase的基础题,传 ...
- OAuth 2.0 概念及授权流程梳理
本文可以转载,但请注明出处https://www.cnblogs.com/hellxz/p/oauth2_process.html OAuth2 的概念 OAuth是一个关于授权的开放网络标准,OAu ...