2个if语句和1个if-else语句有什么区别?
int x;
cin >> x;
if (x==10)
cout << "Hello";
if (x!=10)
cout << "Hey";
int x;
cin >> x;
if (x==10)
cout << "Hello";
else
cout << "Hey";
答案 0 :(得分:2)
在实践中,优化器可能会使它们完全相同。在这些情况下,最好的办法是尝试一下 - 查看编译器的汇编输出,你会看到确切的区别。
答案 1 :(得分:1)
不同之处在于,在第二种情况下,条件被检查并仅计算一次。
答案 2 :(得分:0)
在第一个例子中,两者都被评估。
在第二个例子中,如果第一个是真的,它永远不会到第二个。
答案 3 :(得分:0)
最重要的区别(在我看来)是第一种形式更难阅读,更容易出错。
第二种形式更像英语:“如果x是10则执行此操作,否则执行此操作”,而第一种形式实际上使两个子句无关。这很容易出错,因为如果您确定阈值10需要更改,那么您需要在两个地方更新它而不仅仅是一个。
就执行速度而言,如果有任何差异,我会感到非常惊讶。第一种形式将进行两次评估,但这是最少的问题。这当然不是你应该浪费时间优化的事情。
答案 4 :(得分:0)
没有明显的输出差异。但是,如果您使用梯形图
,它确实使您的代码更容易阅读答案 5 :(得分:0)
如果(x == 10)//仅在x为数字10时匹配,则处理器跳转到下一行,即
if(x!= 10)//仅在x不是数字10时才匹配
在哪里 其他如果只检查,如果数字是10或其他任何东西,那么10。
在某种程度上,两者都会产生相同的结果,但这只是陈述的问题。
所以
因此,最好将第二个用于性能
答案 6 :(得分:0)
从可维护性的角度来看第一个
所以,else
是要走的路。
答案 7 :(得分:0)
在第一个块中,if语句将由编译器运行... 但是在第二个中只有一个语句会运行,因为它们都与一个条件相关联。要么可以是真的,要么可以是真的
您可以将此理解为将第一个视为'和'类型
第二个为'或'类型