新手学C,搞不懂一个有关if语句的小问题。。。
if(a)
处理1;
else if(b)
处理2;
else if(c)
处理3;
++++++++++++++++++++
if(a)
处理1;
if(b);
处理2;
if(c)
处理3;
其中a,b,c三个条件满足a,b,c相互交集为空;a,b,c的并集为全集(即a,b,c可以覆盖所有条件)
请问用上下两个这样的程序处理的话,是否等效。
[解决办法]
根据题目描述,使用两个程序所得到的结果是相同的,但不等效。
在第一个程序中,是由if...else...构成的选择流程。如果a条件满足,执行“处理1”,而后直接跳到“处理3”后面的语句继续执行。只有当a条件不满足时才会去判断b条件是否满足,如果b条件满足,执行“处理2”,而后直接跳到“处理3”后面的语句继续执行。只有当b条件不满足时才会去判断c条件是否满足,如果c条件满足,执行“处理3”,而后接着往下执行。
在第二个程序中,很明显是由3个if语句构成的一个顺序流程,无论a条件是否满足,都会按顺序执行后面的2个判断。
综上所述,两个程序所得结果相同,但在执行效率上不相同。