为什么所有if-else if结构应该由else子句结束,而单个if就可以没有else?

HeBanBei 2016-01-28 03:33:04


...全文
1347 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
if(n > 0)
return 1;
else if(n == 0)
return 0;
else if(n < 0)
return -1;
这个为什么编译器会显示错误呢?
这个不是所有的情况都考虑了吗?
求指点
吾碎汝梦丶S1 2016-02-04
  • 打赏
  • 举报
回复
有else 一定有if或者else if 有else if 一定有 if 不一定有else 有if 不一定就有else if 或者 else
赵4老师 2016-02-01
  • 打赏
  • 举报
回复
引用 17 楼 zhao4zhong1 的回复:
本铁嘴预言:楼主不出十年,一定会遇到一次找了十几天终于找到是因为少些了一个else的bug。
些→写
xigua1102 2016-02-01
  • 打赏
  • 举报
回复
这种规则应该是一些公司的内部规则,这种规则一般制定出来就是为了预防出现bug 一般这类规则制定前,必然是出过问题在这个事情上 所以,要不要遵守看你自己 如果你所在公司给了你这个规范,那你必须遵守,不然扣钱没商量 如果你所在公司没给你规范,那你可以遵守可以不遵守,毕竟写代码不是打印,多写点没多大影响 语法正确与否和规范问题,是两码事
bravery36 2016-01-30
  • 打赏
  • 举报
回复
如果认为else的情况一定不会出现,那么请在那个else分支打个日志,不知道多少人会死在这种一定不出现的情况.
赵4老师 2016-01-29
  • 打赏
  • 举报
回复
本铁嘴预言:楼主不出十年,一定会遇到一次找了十几天终于找到是因为少些了一个else的bug。
lm_whales 2016-01-29
  • 打赏
  • 举报
回复
引用 17 楼 zhao4zhong1 的回复:
本铁嘴预言:楼主不出十年,一定会遇到一次找了十几天终于找到是因为少些了一个else的bug。
应该都会有的
paschen 2016-01-28
  • 打赏
  • 举报
回复
不要被书误导了,估计书上担心你忘了考虑其他情况,但通常如果确实不需要else,那就不用加
lm_whales 2016-01-28
  • 打赏
  • 举报
回复
至于比较简短的代码,那是没问题的。 如果没有这种编程规范的话, 没有必要每个路径都去处理。 编程规范,往往是集体行为,个人也可以有。 但是如果跟集体的有冲突,往往要遵守集体的。
lm_whales 2016-01-28
  • 打赏
  • 举报
回复
这只是一种编程规范,如果你所在的公司,有这个规范,那么就遵守好了 至于原因, 主要是怕有的路径,没有处理, 造成结果是不确定的。 其实,如果if else if 有这个要求, 那么最好 if 也同样处理。 这种,有些路径没有处理的情况, 有时候,也是很难查找的。 尤其是 if, if else if 这种控制结构,很多的代码段中 。
qldsrx 2016-01-28
  • 打赏
  • 举报
回复
怕你多条件判断,写多了忘记处理默认情况了。只有一个条件的话,不会忘记,但条件写多了就可能忘记。从语法上是没有任何强制规定的,那个只是建议性的规定,不是强制性的。
  • 打赏
  • 举报
回复
引用 10 楼 flyrack 的回复:
else{} 这是一个空语句 编译器会无视这样的语句 当它不存在 纯粹消耗时间和键盘而已 中国人就是规矩多 所以才会沦为东亚病夫
这都能扯到一起
  • 打赏
  • 举报
回复
引用 2 楼 HeBanBei 的回复:
[quote=引用 1 楼 zhangxiangDavaid 的回复:] 也可以:

if
else if
else if
//而没有else
嗯,语法上是可以的。可以编译通过。 但是一楼中还是建议不要这样写。我就不太清楚它的想法。[/quote] 都不满足if条件的情况。。。。怎么进行处理 看需求。需要不需要最后的else。
flyrack 2016-01-28
  • 打赏
  • 举报
回复
else{} 这是一个空语句 编译器会无视这样的语句 当它不存在 纯粹消耗时间和键盘而已 中国人就是规矩多 所以才会沦为东亚病夫
HeBanBei 2016-01-28
  • 打赏
  • 举报
回复
引用 4 楼 flyrack 的回复:
[quote=引用 2 楼 HeBanBei 的回复:] [quote=引用 1 楼 zhangxiangDavaid 的回复:]

if
else if
else if
//而没有else
[/quote] 这种写法是必须的 比如下面这种

int n=9;
if(n=m){n=0;}
else if(n=l){n=1;}
[/quote]
引用 6 楼 zhangxiangDavaid 的回复:
有些时候,这种写法是必须的,比如4楼的例子。
这个例子完全可以改写成

int n=9;
if(n=m){n=0;}
else if(n=l){n=1;}
else{}
现在的问题是,一楼中说到最好改成这样的。而我不理解为什么它这么说。 看大家的回复,都认为不需要改成这样子。
paschen 2016-01-28
  • 打赏
  • 举报
回复
switch中同样不要求一定要有最后的default
paschen 2016-01-28
  • 打赏
  • 举报
回复
不需要写,除非有必要考虑这种情况,能保证在每个if都不匹配时不会导致结果的不正确就行了
fefe82 2016-01-28
  • 打赏
  • 举报
回复
else if 多了之后,容易搞不清最后剩下的情况是啥。
苏叔叔 2016-01-28
  • 打赏
  • 举报
回复
有些时候,这种写法是必须的,比如4楼的例子。
flyrack 2016-01-28
  • 打赏
  • 举报
回复
引用 2 楼 HeBanBei 的回复:
[quote=引用 1 楼 zhangxiangDavaid 的回复:]

if
else if
else if
//而没有else
[/quote] 这种写法是必须的 比如下面这种

int n=9;
if(n=m){n=0;}
else if(n=l){n=1;}
加载更多回复(3)

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧