C语言的if语句可能遇见哪些问题?相关运算符?容易出错的if语句?

前面我们提到了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为单位的逻辑运算符代替逻辑预算符

同上个例子

上文资料来源于网络

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值