前面我们提到了C语言中的if语句,并且简单学习了if语句的相关运用,现在我们来说说if语句的相关拓展及常见问题。
“悬空else”问题
当if语句嵌套时,要注意此类问题,举个例子
if 语句
if 语句
result = 语句
else
printf 语句
从肉眼来看,其中的缩进格式暗示了else属于最外层的if语句。然而C语言遵循的是else子句应该属于离他最近且还未与其他else匹配的if语句。在这个例子中,else子句实际上是属于最内部的if语句,所以正确格式如下:
if 语句
if 语句
return 语句
else
printf 语句
if语句我们大多数运用在判断的背景上,而前文我们知道了C语言中简单的判断符:== ,<,>。如果我们需要更完善的符号,例如求不相等呢?按照之前的方式,我们就只能使其大于或者小于0,这样会增加程序的运算时间,这时候我们有了相关拓展:预算符
相等运算符(==)/(!=)
由于前面的博客有过相关代码,就不再举例。
==运算符会对左右两侧的操作数进行比较,如果他们结果相等则为1,反之为0.(结果是int型整数)。
与==运算符相反,来判断两个数是否不相等的是!=运算符。而这两种运算符统称为相等运算符。
值得注意的是,==和!=分别是一个单词,如果在他们之间加入空格,是不可取的。(= =)
关系运算符
如图,请注意<=一类运算符的先后顺序,如果写成=<则是错误的。
条件运算符
该运算符是需要三个操作数的三目运算符。(只有条件运算符属于三目运算符,其他的运算符都是单目或者双目。
这是对于条件运算符的相关图解。
差值计算
使用条件运算符输入的两个整数差值称为差值计算。
这里我们同样使用条件运算符。
同学们可以学以致用,尝试用if语句写一些简单的问题:计算三个整数中的最小值并显示,计算四个整数中的最小并显示,使用if语句代换上图的条件运算符,使其达到同样的效果。
逻辑运算符
&&称为逻辑与运算符:对使用该运算符的表达式 a && b 进行判断,如果a和b的值都不为0,则结果为1,反之结果为0(结果的类型为int)。可以把它理解为a并且b。
if语句最开始的判断表达式为:a >= b。
如图b,对使用该运算符的表达式a ll b进行判断,如果a和b都为0,则表达式的结果为0,反之为1,大家可以理解为 a或者b。
一般情况下,正如加法运算表达式 a+b+c 会被视为 (a+b)+c 一样,逻辑表达式a ll b ll c 也会被视为这样,因此,只要有abc中只要有一个值不为0,它的判断结果就为1.
逻辑与运算符和逻辑或运算符统称为逻辑运算符。
注:&&运算符在a的判断结果为0时不会对b进行判断,而ll预算符相反,在a的判断结果不为0时不会对b进行判断。
容易出错的if语句
一、在括起控制表达式的)后面加分号
例如
if (n>0):
printf (“n为正数”\n);
如果执行该if语句,无论n是什么值,结果都会显示“值为正”,原因在于(n>0)后面的分号。
只有一个分号的语句叫做空语句(执行空语句后什么也不会发生),因此可以这么理解
if (n>0)
;
printf ();
二、判断相等性时习惯的输入=
判断相等性时应使用==
三、判断三个变量的相等性时使用==
相等运算符==是双目运算符,判断三个变量的相等性时因写为 a == b && b== c
四、两个条件的判断不使用“ll”“&&"
同上一个例子
五、使用以bit为单位的逻辑运算符代替逻辑预算符
同上个例子
上文资料来源于网络