C语言,是全球使用最多的编程语言。上次我们谈到了switch语句,但在C语言中,if条件构成的选择结构程序很重要。在实际问题中,往往需要对不同变量进行比较,然后分别执行不同的语句。如何使用if语句呢?小编在这里谈一谈if语句基本用法与使用技巧。

一、if语句

在操作符章节中我们学习过问号表达式,也就是当某一个条件表达式是真时,问号表达式的结果为冒号前的结果,当条件表达式是假时,问号表达式的结果为冒号后的结果。这里我们可以分析一下,问号表达式其实是一个条件判断功能表达式,也就是说:

如果条件表达式的值为真:

那么结果为A;

否则:

那么结果为B。

其实这是一个我们在生活常常需要处理的一种情形,如果……那么……否则……那么……

二、 if语句基本用法

if语句基本用法有如下四种形式,我们以求ab中的最大值为例,分别来看看。

1) 简单的if语句形式

if(某条件)执行某项操作。如图的if语句,即如果a

该语句形式的语义是:如果表达式为真,则执行语句块;否则,将跳过该语句块,执行整个if分支语句后面的其它语句。上述语句块,可以是一条语句,也可以是多条语句组合。

2) if-else语句形式

if(表达式)语句a

else 语句b,即满足表达式时,执行语句a,否则执行语句b

该语句形式的语义是:如果表达式为真,则执行语句块1;否则,执行语句块2。也就是说语句块1和语句块2两者必执行其一。然后,再执行整个if分支语句后面的其它语句。

3) if-else-if语句形式

if(表达式1)语句1

else if(表达式2)语句2

else 语句3

即满足表达式1时,执行语句1,不满足表达式1,但满足表达式2时,执行语句2,都不满足执行语句3

该语句形式的语义是,如果依次判断各表达式,若表达式为真,就执行对应的语句块,然后跳出整个if分支语句,执行后面的语句;如果前m个表达式均不为真,则会执行语句块n,然后再跳出整个if分支语句,执行后面的语句;也就是整个if分支语句的n个语句块,程序必定会执行其一。

4) if语句嵌套形式

即在if语句内写入其他if语句,如图

所谓的if语句嵌套形式是指if语句某一分支里又是一个if语句。通俗的理解是,前三种用法形式里的语句块,又是一个if语句,而且可以是前三种用法形式的任一种。C语言的C89标准指明,编译程序必须最少支持15层嵌套;C99标准把限度提升到127层。不过虽然支持这么多层嵌套,但实际编程应用时,为了保持程序的可读性及简洁程度,应尽量减少嵌套层次。

三、 if语句用法技巧

1) 合理调整if分支顺序

在编程应用时,应合理调整if分支顺序,把大概率为真对应情况的语句块直接放在if后面,不要放在else后面。这样做有利于减少程序的判断次数,提高执行效率。

例如,我们把学生成绩分成60分及以上、40-60分、40分以下三个分数段。很显然,及格的学生是大多数,也就是某个学生及格的可能性较大,低于60分较少,低于40分的更少。在编程处理学生成绩的应用时,通常用if-else-if语句形式,就应该把60分及以上的学生处理情况直接放到if语句之后,40-60分段放到else if语句后面,低于40分的情况放到else语句后面处理,这种安排很符合大家的逻辑思维习惯。如果把顺序颠倒,if语句处理40分以下,else if语句处理40-60分段,60分及以上放到else语句后面,无形中增加了成倍的成绩比较次数。

2) else结合问题

C语言if语句编程应用时,应该注意else的配对问题,它始终与最近的未匹配的if相结合。如果不注意该问题,有可能程序执行结果与预期相去甚远。请看下面的例子说明。

if(表达式1)

if(表达式2)

语句块1;

else

语句块2;

上面的例子我们来看,作者的意图是,如果表达式1与表达式2均为真的情况下,执行语句块1;如果表达式1为假,则执行语句块2。这里虽然else与表达式1的if对齐,但它们并不能配对;事实上else是与表达式2的if相结合。实际执行逻辑是:在表达式1为真的情况下,继续判断表达式2,若表达式2为真则执行语句块1,若表达式2为假则执行语句块2。可见与作者的意图相差太远。

要想实现作者意图,解决办法是合理使用“{}”,将上述表达式修改成如下形式即可。

if(表达式1)

{

if(表达式2)

语句块1;

}

else

语句块2;

3) 避免if/else语句后面加分号“;”

C语言中,分号“;”组成的语句称为空语句,它什么都不做,通常被用来做空循环体。如果不小心在if/else语句后面加了分号“;”,程序执行有可能违背了你的意图,导致意外结果。例如:

if(表达式);

语句块;

本来意图是表达式为真就执行语句块,现在不小心在if后面加了个分号“;”,则上述表达式实际上变成了如下形式:

if(表达式)

;

语句块;

也就是说如果表达式为真,则执行一个空语句。然后再执行语句块。此时上述语句块不再是在表达式为真的条件下执行,而是会无条件的执行。

可见,一个分号“;”误用会带来不可预计的后果。而且,此种错误在程序编译时是发现不了的,不会有任何错误提示。因此,建议大家编程时一定要细心。

以上就是c语言中if语句的用法是什么的详细内容,如果你想更好的提升你的编程能力,好好学习C/C++编程知识的话!那么你很幸运~

加入C语言/C++企鹅圈,这里还有一些你可能不知道的趣事分享哟。

判断语句_如何学好C语言判断语句?攻略if语句是第一步相关推荐

  1. java switch case怎么判断范围_【转】Java期末复习攻略!

    期末 19年就这样要过去了, 终于到了小时候作文里的未来呢! 然而,期末考试也随之来临了. 不知大家"预习"的怎么样呢? 期末复习资料的放送快接近尾声了 下面康康学长学姐们 怎么教 ...

  2. VB.net:VB.net编程语言学习之操作符(变量/常量/数据类型/声明)逻辑控制语句(条件判断/循环语句)的简介、案例应用之详细攻略

    VB.net:VB.net编程语言学习之操作符(变量/常量/数据类型/声明)&逻辑控制语句(条件判断/循环语句)的简介.案例应用之详细攻略 目录 VB.net编程语言学习之操作符/变量/常量/ ...

  3. 单片机c语言除法,单片机C语言知识点全攻略

    单片机C语言知识点全攻略 为了让有需要的朋友进一步了解单片机C语言知识,下面的文章将为大家讲解单片机C语言的知识内容,欢迎学习! C51运算符和表达式 运算符,双目运算符和三目运算符.单目就是指需要有 ...

  4. python判断两线段是否相交_c语言 判断两直线段是否相交

    转了多人的放到一起比较!! //功能:求点在有向直线左边还是右边 //返回:0共线.1左边.-1右边 intleft_right(pointa,pointb,doublex,doubley) { do ...

  5. 瞬时极性法对正负反馈的判断方法_何为反馈?如何判断?统统告诉你

    所谓反馈,就是指将放大电路的输出量(电压或电流信号)的部分或全部,通过一定方式(元件或网络)返送到输入回路的过程,完成输出量向输入端回送的电路称为反馈元件或反馈网络,具有反馈元件的放大电路称为反馈放大 ...

  6. c语言解析sql语句_如何在C语言里面执行SQL语句?

    一.为什么要在C语言程序中执行SQL语句? 在C语言程序中执行SQL语句的原因有以下几个: (1)程序需要获取数据库中某数据表的字段值,并对这些字段值进行解析以执行后续操作. (2)程序需要更新数据库 ...

  7. c语言用if语句abc输出最大值,C语言基础入门选择结构-if语句(78页)-原创力文档...

    C语言基础入门选择结构-if语句_电脑基础知识_IT/计算机_专业资料.第9单元选择结构-if语句<程序设计基础>北京八维研修学院第1节选择结构导入?... <程序设计基础> ...

  8. MySQL数据库test连接语句_【MySQL数据库开发之二】MySQL 基础语句的书写与操作!...

    本篇Himi简单介绍一些MySQL数据库的基础操作: 注:mysql 语句对大小写不敏感,语句以分号";"标识语句结束: 1.   首先使用两个简单的查询语句: 查询当前版本:se ...

  9. db2 如何导出insert语句_《MySQL 入门教程》第 23 篇 DML 语句之插入数据

    文章来源:https://blog.csdn.net/horses/article/details/108287687 原文作者:不剪发的Tony老师 来源平台:CSDN 数据库的基本操作包括增.删. ...

最新文章

  1. python ftp文件夹文件递归上传推送
  2. 数据包构造分析工具Hping3常用命令集合大学霸IT达人
  3. Oracle 给字符串补空格、补0
  4. CISCO无线AP配置手册
  5. 服务器TIME_WAIT和CLOSE_WAIT分析和解决办法
  6. 学生成绩管理系统V3.0链表版
  7. 数据挖掘:关联分析—Apriori算法
  8. CMMI3认证和CMMI5认证有哪些不同
  9. 2022年危险化学品生产单位安全生产管理人员试题模拟考试平台操作
  10. 【毕设】requests+bs4+re 爬取知网文献来源的信息
  11. 管螺纹如何标注_你所不知道的机械螺纹全面常识(分享篇),赶紧收藏下吧
  12. locality sensitive hashing(LSH)原理和具体实现
  13. 南大通用GBase8s 常用SQL语句(150)
  14. 阿里云“汽车云”亮相云栖大会,小鹏、一汽、长城、地平线等均已上云
  15. c++ 字符串去掉首尾空格_C++ 去掉字符串的首尾空格和全部空格
  16. 小话设计模式(十)外观模式
  17. wingw-w64安装时 the file has been downloaded incorrectly!
  18. 华为2020届逻辑笔试
  19. 2020.12学习记录:CentOS登录root时遇到 “login incorrect” 问题的解决方案
  20. DIY强大的虚拟化环境-前言与目录

热门文章

  1. 第二章:React 面向组件编程
  2. LeetCode--62.不同路径(排列组合,动态规划)
  3. easyPR源码解析之ann_train.h/config.h
  4. OpenCV3学习(12.2) 目标跟踪之运动模板法segmentMotion实现(Mat版本)
  5. 7-157 求一元二次方程的根 (20 分)
  6. 输入一个字符串,删除汉字字符或者西文字符(C语言)
  7. 眉山市2021高考成绩查询,四川省眉山市2021年普通高校招生网上报名入口
  8. 部署Linux单机kafka踩坑
  9. Springboot 多模块项目创建与配置
  10. Mysql存储过程查询结果赋值到变量