为什么C语言中的else总是无效?

   更新日期:2024.05.11
首先,这种题要知道答案很简单,自己把题目放到编译软件上运行一下就行,然后可以通过结果反推过程。
这道题我编译出来结果是2,以下是我的逻辑:
首先,要知道else配对的是哪个if,这个配对方法很简单,由于没加括号,直接往上行找离它最近的没配对的if就行。本题与else配对的是第二个if;
其次,由于没有加括号,第一个if只能控制下一行的语句,即第二个if;第一个if无效,所以程序判定下一行的第二个if无效,而再往下一行的语句又受第二个if控制,所以它受到连锁反应,间接被无效了。下面的else与第二个if配对,第二个if无效就是else配对对象无效,else自然就跟着无效了。那么c=2就没有受到任何改变,原样输出。
这道题,虽然没有加括号括住下面的内容,但是最后因为if的性质,产生了连环无效,实际上与加了括号的效果一样
这里引起迷惑的应该是与else配对的if被无效后,else的反应;尤其是本题有两个if,会让人想到配对了的if无效后,else还可能直接与另一个if形成配对关系。但是由实际编译的结果可知,else是从一而终的,它最开始配对的if无效,它也会直接跟着无效,不会与其他else配对。

  • 19268621015 :为什么c语言中if后加个else没有用?
    卫变进1659 :答:因为if else没结束,要么去掉分号,要么给他加上{ }。1、先说结论:说明你的else是独立的。2、出错原理:c语言里,有if不一定有else,但是有else一定要有相对应的if。3、解决方法:这种情况你往前推一下,所有的else能...
  • 19268621015 :在c语言程序中if-else语句的else语句总是不执行是怎么回事
    卫变进1659 :答:1、新建一个工程和文件,命名为Third和first.c , 然后书写好程序的模板结构。2、首先我们演示一个很不规范的代码写法,很多初学者容易写成这样,导致出现意想不到的运行结果。3、很多初学者就会不知所措,其实只要把代码...
  • 19268621015 :在c语言程序中if-else语句的else语句总是不执行是怎么回事
    卫变进1659 :答:那就是IF里面的满足了啊,IF条件满足就执行IF的,ELSE是IF条件不满足,另外可以用步进调试看看程序怎么判断的
  • 19268621015 :C语言问题为什么if和else没有发挥作用?
    卫变进1659 :答:第22行for语句内部写的有问题:第一次进入for循环就会直接执行break退出for循环。把if和else对齐并加上{},并按层级用缩进。这样代码看起来才会一目了然,便于阅读或排错。如下:if(...){ } else { } ...
  • 19268621015 :c语言老是不执行else???
    卫变进1659 :答://这里应该是%dif (a==1)printf("me too!");elseif (a==2)printf("go die!");//符号要是英文状态下的elseprintf("error!");//符号要是英文状态下的return (0);system("pause");}还有疑问的话可以追问 ...
  • 19268621015 :在c语言程序中if-else语句的else语句总是不执行是怎么回事?
    卫变进1659 :答:第二个if开始依次改为 else if(n>999)else if(n>99)else if(n>9)else 表达式10000>n>999,即(10000>n)>999 无论n的值是多少表达式的值必然是假
  • 19268621015 :C++为什么总是提示没有if匹配的非法else
    卫变进1659 :答:if和else没有正确配对,导致这样的错误。还有第二个if else 后面的分号应该去掉,不然就会逻辑错误。
  • 19268621015 :(c语言)为什么只能输出if不能输出else
    卫变进1659 :答:||是或,满足一个条件就行,1 1 2 b+c>a和a+c>b都满足了 所以成立,&&才是且
  • 19268621015 :C语言循环问题,为什么运行else这个环节时会无限循环。 else { printf...
    卫变进1659 :答:所以我觉得你出现死循环的原因不在于eles,而是在于while(1)无法正常退出,或者说你没有给出出口。另外你可以在你的函数中给出出口,也就是说在函数比如:szr(long int *w,long int d)函数中的最后放上一个return,也...
  • 19268621015 :为什么这段if-else语句的条件没有生效?无论输入什么输出都是1
    卫变进1659 :答:语法错误!您也够懒,大括号都懒得加,if,else语句后如果只有一句执行语句,可以不加 { },多于一句必须要加 { },个何况您循环嵌套了!还是不要偷懒,改写就写吧.
  • 相关链接

    欢迎反馈与建议,请联系电邮
    2024 © 视觉网