大神菜鸟都看看啊,两种if else写法,代码逻辑部分的写法就应该像二叉树一样优雅严密,我觉得第一种像二叉树啊,为什么你们觉得第二种好呢?没分分,我只剩下C币了

说好一起扑成狗 2018-05-15 06:16:27
两种if else 写法如下:

if (表达式1)
{
....;
}
else
{
if (表达式2)
{
....;
}
else
{
....;
}
}


if (表达式1)
{
....;
}
else if (表达式2)
{
....;
}
else
{
....;
}


三种情况,两种if else写法,共六段代码,我写一种.另一种大家肯定都会写.

//第一种情况:互不相干式
int a = 0;//a取 -1, 0, 1
if (a <= -1)
{
printf("表达式1, a = %d\n", a);
}
else
{
if (a >= 1)
{
printf("表达式2, a = %d\n", a);
}
else
{
printf("else, a = %d\n", a);
}
}


//第二种情况:包含式
int a = -1;// -1,0,1,2
if (a >= 2)
{
printf("表达式1, a = %d\n", a);
}
else
{
if (a >= 0)
{
printf("表达式2, a = %d\n", a);
}
else
{
printf("else, a = %d\n", a);
}
}


//第三种情况:相交式
int a = 4;// -4,-3,-2,-1,0,1,2,3,4
if (a >= -1 && a <= 3)
{
printf("表达式1, a = %d\n", a);
}
else
{
if (a >= -3 && a <= 1)
{
printf("表达式2, a = %d\n", a);
}
else
{
printf("else, a = %d\n", a);
}
}
...全文
1029 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
还有其他大神, 我就不一一回复了. 我特别喜欢你们,你们都好厉害. 我特别佩服你们, 什么时候我能想你们这么优秀就好了.
  • 打赏
  • 举报
回复
引用 9 楼 DelphiGuy 的回复:
串联的if else,应该把出现概率大的情况放在前面
大神,我特别喜欢你.你和赵老师一样牛.我特别佩服你.
  • 打赏
  • 举报
回复
赵老师,我有什么问题都希望能得到你的指点,心里特别高兴,这两天生病了.大家都保护好身体.
赵4老师 2018-05-16
  • 打赏
  • 举报
回复
赵4老师 2018-05-16
  • 打赏
  • 举报
回复
下面两种if语句的书写格式哪个比较好?为什么?
①if (a>1 && a<5 && b>3 && b<7)
②if (1<a && a<5
          && 3<b && b<7)

②较好,两个变量分开,变量范围一目了然1<a<5,3<b<7,且数字从左到右从小到大排列
donjin9 2018-05-16
  • 打赏
  • 举报
回复
第一种要多打一对大括号,缩进,不爽。为啥这么执着2呢
赵4老师 2018-05-16
  • 打赏
  • 举报
回复
无profiler不要谈效率!!尤其在这个云计算、虚拟机、模拟器、CUDA、多核 、多级cache、指令流水线、多种存储介质、……满天飞的时代!
ooolinux 2018-05-16
  • 打赏
  • 举报
回复
引用 9 楼 DelphiGuy 的回复:
串联的if else,应该把出现概率大的情况放在前面
CPU分支预测?
zhgwbzhd 2018-05-16
  • 打赏
  • 举报
回复
如果想了解更深,考虑学习汇编语言,毕竟所有的编译器都需要将高级语言编译成机器码才可以执行。 不过就你的这两种方式,编译成机器码而言,应该是一样的。你可以试着编译一下,看看CPU中,翻译成汇编是如何执行的。 大意就是如下: 比较(最开始的if) 如果不满足就跳走,当然了满足就继续执行,到最后时也是跳走。 至于你是 else { if() {} else {} } 还是 else if() {} else {} 这里都是一条比较语句,就是你的条件比较。 如果不满足就跳走(跳到else那里执行),满足就继续执行,完毕后跳走即可。 当然不同的编译器可能编译成不同的机器语言,但是这个简单的条件,应该没啥大区别。
  • 打赏
  • 举报
回复
串联的if else,应该把出现概率大的情况放在前面
jiknbffg 2018-05-16
  • 打赏
  • 举报
回复
写的很细。。。。
自信男孩 2018-05-15
  • 打赏
  • 举报
回复
只要逻辑见解,易懂就好。嵌套不易过多,过多会使理解变得困难。
paschen 2018-05-15
  • 打赏
  • 举报
回复
无谓好坏,通常根据语义,第2种更倾向表达几个分支都是并列关系,而第1种倾向表达后面的分支是前面的一个子情况,虽然两种实际效果是一样的,但根据不同情况你可以选择更容易理解的写法
ooolinux 2018-05-15
  • 打赏
  • 举报
回复
研究精神值得鼓励!虽然这个问题看起来很小。
  • 打赏
  • 举报
回复
我写了六段代码,运行结果是,两种if else的写法,是一样的. 我觉得第一种更像二叉树,更清晰. 可是好多人说第二种if else 更清晰. 难道是我错了? 可能有人要说,研究这有毛的意义,有毛的区别? 代码首先要写的逻辑严密,不留死角.才有健壮性,才不会奔溃啊. 还有,代码要写给自己和别人看,写的规范,严谨点好啊.

69,369

社区成员

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

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