趣文网,分享全网好句子、好文章!

浅谈C语言中if语句

时间:2023-06-19 03:27:01

相关推荐

浅谈C语言中if语句

我们知道,C语言提供了三种基本流程控制结构,分别为顺序结构、选择结构和循环结构。对于选择结构,则是程序根据输入条件或中间执行结果的不同而选择执行不同的语句块。选择结构分为if语句和switch语句两种。本文仅谈一谈if语句基本用法与使用技巧。

1、 if语句基本用法

if语句基本用法有如下四种形式,我们分别来看。

1) 简单的if语句形式

if(表达式)

语句块;

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

2) if-else语句形式

if(表达式)

语句块1;

else

语句块2;

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

3) if-else-if语句形式

if(表达式1)

语句块1;

else if(表达式2)

语句块2;

……

else if(表达式m)

语句块m;

else

语句块n;

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

4) if语句嵌套形式

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

2、 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(表达式)

;

语句块;

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

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

好了,关于if语句的用法今天就总结到这,如果大家有任何疑问请留言探讨。我是“C语言知识传播者”,志在瞄准C语言,挖掘和总结C语言的难点和痛点,给C语言编程爱好者和本领域从业人员提供参考,我会用心总结C语言知识的点点滴滴,您的关注是我持续创作的动力,请收藏本文、转发并点赞,希望得到您的持续关注,谢谢!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
显示评论内容(3)
  1. 恋上锅的鱼2024-01-11 11:03恋上锅的鱼[湖北省网友]202.0.177.124
    @荷爾蒙、殤if语句的嵌套和多条件判断让C语言程序员能够编写复杂的逻辑,这是C语言的强大之处之一。
    顶0踩0
  2. 荷爾蒙、殤2023-11-03 16:31荷爾蒙、殤[江西省网友]106.231.16.135
    在C语言的学习中,if语句是一个基础但关键的概念,掌握好if语句对于理解后续的语法和逻辑非常有帮助。
    顶0踩0
  3. 漠歌岩语2023-08-26 21:59漠歌岩语[安徽省网友]43.224.243.166
    if语句是C语言中非常重要的控制流语句,能够根据条件来执行不同的代码块,非常灵活。
    顶8踩0
相关阅读
「百度AI趋势解读」自然语言交互产品的当下及未来

「百度AI趋势解读」自然语言交互产品的当下及未来

一、 背景从80年代开始的近四十年时间内,我们已经跨越了四个技术时代,分别是:PC时代互联网时代移动互联网时代AI时代我们现在所处的AI时代,也正是AI

2015-11-30

频语法点:倒装 从句 非谓语分析 语法点早掌握 做题不出错

频语法点:倒装 从句 非谓语分析 语法点早掌握 做题不出错

在学习英语的过程中,同学们要掌握一个整个大框架,这个大框架分是三个不同的英语模块,一部分为语音一部分为词汇,另一部分为句法

2020-11-30

语音输入就是生产力——横向评测:百度语音输入vs讯飞语音输入

语音输入就是生产力——横向评测:百度语音输入vs讯飞语音输入

但当下阶段,讯飞语音输入法的效果则在不断降低之中,这一类型的问题为何会产生笔者无从知晓,百度语音输入能力超过了讯飞

2023-06-12

才儿坊:幼儿语言发展特点及规律

才儿坊:幼儿语言发展特点及规律

才儿坊将分享其各自的特点也发展规律

2023-07-30

智能语音平台:技能搭建与多轮交互

智能语音平台:技能搭建与多轮交互

例如:冰箱食材管控技能,说法枣吃完了,但是误识别成了早吃完了,就需要针对食物种类识别进行加强优化

2008-10-06