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

天天见闻 天天见闻 2022-04-10 教育 阅读: 219
摘要: 在操作符章节中我们学习过问号表达式,也就是当某一个条件表达式是真时,问号表达式的结果为冒号前的结果,当条件表达式是假时,问号表达式的结果为冒号后的结果。这里我们可以分析一下,问号表达式其实是一个条件判断功能表达式,也就是说:以上就是c语言中if语句的用法是什么的详细内容,如果你想更好的提升你的编程能力,好好学习C/C++编程知识的话!

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语言运算符的优先级和结合性

C语言运算符的优先级和结合性

作者: 天天见闻 时间:2023-10-17 阅读: 53
本节将从一个示例开始说明,请查看下面的代码: #include stbio.h int main{ int a=16,b=4,c=2; int d=a+b*c; int e=a/b*c; printf(“d=%d,e=%d\n”,d,e); return0; 执行结果: d=24,e=8 1)对于式a+b*c,如果按照数学规则导出的话,应该计算乘法并计算加法,b*c的结果是8,a+8的结果是24,所以d的最终值也是24。从执行结果可以确认,我们的推论是,C语言也计算乘法来计算加法,和数学中的规则一样。...
嵌入式软件开发为什么选择C语言?

嵌入式软件开发为什么选择C语言?

作者: 天天见闻 时间:2022-12-23 阅读: 160
回到主题,为什么嵌入式软件开发选择C语言?能够直接访问硬件的语言有汇编和C语言,汇编属于低级语言,难以完成一些复杂的功能,但是汇编比C语言访问硬件的效率更高。开发工具在嵌入式软件开发中有重要的地位,大部分嵌入式软件开发工具都是针对C/C++编程语言。你会发现很多嵌入式C相关的工具链,而很少有C#、JAVA、PHP这些用于嵌入式的工具链。...
C语言 static 声明静态变量?大佬原来用它干这事!

C语言 static 声明静态变量?大佬原来用它干这事!

作者: 天天见闻 时间:2022-05-04 阅读: 189
这也就是在全局的时候,起的作用,将对应的变量,或者函数的可见范围,变成只对自身可见,对外不可见。c能访问,做的对修饰的变量或者函数进行限定。说完了全局变量,全局函数前面加,下来说下函数内部,添加的妙用。这样子不舒服的一点就是,本该是在add内部的一个变量,被丢到全局区域,这样子就会有个问题,会被本文件的其他地方调用,但我们设计的这个变量,只想让add函数用。...
C语言:求最大公约数和最小公倍数!

C语言:求最大公约数和最小公倍数!

作者: 天天见闻 时间:2022-05-02 阅读: 204
相信大家对最大公约数和最小公倍数一定不会陌生吧,那么在这里我就不做太多的解释了,直接上代码:#4:a:c:2:b:1:c:c:a:9:9:1:a:f:7:1:c:e:8:c:1:0:3:2:0:2:c:b:b:d:1:6#方法1和方法2其实是一样的,就是函数中的两种不同表示而已,大家选择自己比较熟悉的方法写就行了!...
编程入门先学什么?

编程入门先学什么?

作者: 天天见闻 时间:2022-03-17 阅读: 334
C语言语法简单,有良好的逻辑抽象,入门的话还是先面向过程吧,不要刚学就面向对象云里雾里的,如果是要更全面、深入的学习语言本身就C.入门是从Basic语言开始的,大概熟悉程序的基础语法与逻辑后,进阶C语言。编程入门后,其实学什么语言已经不太重要了(主要看计划的发展方向)。把程序设计的逻辑搞懂了,学什么语言都很快。编程学习没有捷径可走,只有入门快慢之分。...
编程入门先学什么 零经验的人学编程难吗

编程入门先学什么 零经验的人学编程难吗

作者: 天天见闻 时间:2022-03-09 阅读: 365
有很多的同学是非常的想知道,编程入门先学什么,零经验的人学编程难不难,小编整理了相关信息,希望会对大家有所帮助!编程入门首先要学的是什么要学会编程思想、找到编程感觉,必须从实实在在的编程实际工作中去实践和体验。不少朋友在学习编程时只简单地学习语法、结构,枯燥而且目的性也不强,会大大降低初学者的兴趣和学习效果。更何况你没有接触过编程,你就不要学太多语言。...
我来说两句

年度爆文