C语言中的if语句

C语言语句结构分为三种

第一种是顺序结构,第二种是选择结构,而第三种是循环结构。

if语句则是属于第二种选择结构,又称之为分支结构,或者分支语句。

同样属于分支语句的还要switch。

if语句的写法:

  1、if(表达式)

          语句;

只要括号内的表达式能够达成,就能够进入下面的语句!

2、

  if(表达式)

     语句1;

  else

    语句2;

若括号内的表达式能够达成则进入语句1,若括号内的表达式不能达成,则进入else下面的语句2。

3、

   if(表达式1)

      语句1;

  else if  (表达式2)

     语句2;

else

     语句3;

若表达式1能够达成,则进入语句1,若表达式1未能达成则进入 else if 进行表达式2的判断,若表达式2 也未能达成,则进入else 下面的语句3。

if 和 else 的格式问题:

关于if和else ,其实并不是每一个if的下方都会有else的跟随,但是如果出现了else 那么必定有if的出现,而 if 和else之间还会出现一定的格式问题。

在有的编译器当中,列如 VS 会自动将else匹配并对齐到距离 else最近的 if 上,这也是else的一个特性,会跟随最近的且未被匹配的 if 。

 

如图所示。

若想要else和最开始的 if  进行匹配 则需要进行格式的调整,也就是加上花括号。

关于if 和 == :

在 if 的判断条件中,时常会出现一系列的问题,而这些问题则往往与 if 身后的括号内的表达式有关。

举例:if ( num = 5)

num = 5 中的= 是一个赋值符号,意思是将5赋予了num这个变量,这样的写法,无法说明是对是错,但编译器是允许的,可是,这种写法在一些循环的过程中,是错误的,错误的原因就是这个等号 = ,因为 = 可能会将整个循环变成一种死循环。

所以应该的写法是 if (num == 5)

而正确的写法,往往是因为手速的问题,而导致了==中的一个=的缺失。

所以,若需要==的判断语句,更为严谨或是说不易出错的写法应该是 if (5 == num)

关于 if 、 <、>

在 if 的判断语句中,往往会出现大于小于两个符号,而对于多组数据进行的大小对比,很多初学者会出现一种错误的书写方法,那就是 if (a>b>c)或者是 if (a<b<c)

这两种写法都是错误的,或者说都是某些初学者会犯的错误。

在大小关系符号中的判断结果,我们会知道,当a>b 这个条件成立的时候,a>b会变成1这个非0数字。

而在  if  中,非0的数字通常表示为 ”条件为真” 或者  “条件达成” ,而 数字 0则通常表示为"条件未达成" 或者"条件为假"  。

而大于小于符号,是一个从左往右进行比较的关系运算符。

所以,当 int a = 10;int b=9 ;int c=8;的时候,在我们的数学逻辑中a>b>c是合理的,而最后的结果也是判断的条件是真的,或者说条件达成。

但是,在 C语言中的  if  中 这种写法在无疑是 错误的。

若正真的想要表达,a>b>c 应该是 a>b&&b>c

而a>b>c这种写法的大意则是:

a>b 条件成立 而因为a>b 的条件成立,所以使用数字1 进行代替,并且因为大于小于从左往右的判断顺序,在此之后的判断,则演变成为了  1>c  

而 c = 8 ,数字1小于数字8 所以整个 a>b>c的条件在 if 的判断中,是“条件未达成” "条件为假"

a<b<c也是同理,因为关系运算符><的运算法则,以及 if 判断条件,所以这种写法经常会出现差错,但又因为初学者的数学逻辑,而会感到疑惑。

  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值