嵌套if和&&之间有什么区别?

写作之间有什么区别:

if(condition1 && condition2){ //some code } 

和:

 if(condition1){ if(condition2){ //some code } } 

如果有,哪一个更好?

差异主要在于可读性和维护性。

两个逻辑条件的连接通常应该意味着它们之间存在语义关系。

另一件需要考虑的事情是范围界定。 嵌套if在这方面为您提供了额外的灵活性。

其他人已经说过需要说些什么。 它们基本相同。 第一个是在一个class轮中进行状态检查。 第二个可以用于更详细的检查。 第二个可以在调试时certificate是好的。 例如。 只需在false case上添加调试操作。 以下是我能想到的一个有趣的小例子

 if("shell we meet today?" && "would you like some coffee?") { //Check both at the same time. /* *Sequential order of evaluation for && ensures that *left hand side operand (condition) gets evaluated first */ //take some chocolates with the coffee } if("shell we meet today?") { //then //if you want to figure out the options first if("would you like some coffee?") { //take some chocolates with the coffee } else if("how about lunch?") { //Pizza? } else { //some fall back scenario? } } 

else if条件不同,它会对else和嵌套的else if产生影响,但除了可读性之外没有区别。

在第一种情况下,对于任何评估为true的情况,执行块中执行的任何代码。 在第二个If语句中,可能存在第一个条件等于true但第二个条件不等于true的情况。 并且开发人员可能需要:
– 如果满足一个条件,执行some code
– 然后是满足第二个条件的more code
– 没有代码如果只满足第二个条件而不是第一个条件(例如:condition1 =球没有死,条件2 =球进入网[ more code将在足球比赛中注册目标])

代码:

 if(condition1){ //some code if(condition2){ //more code } } 

哪个更好?

这取决于你使用它的是什么

语法 不同语义 相同

每种方式之间没有function差异。 编译器可能会将它们优化为相同的机器代码(尽管不能保证)。

实际上,没有区别; //some code如果condition1condition2计算为非零( true ),则只会执行//some code

第一个, if(condition 1 && condition 2) ,只能包含一个else部分,假设您的代码在两个条件都正确或两者都错误的情况下工作。 在另一部分中,您可以有两个其他部分,每个部分用于每个条件的失败,从而增加问题的范围。

他们做同样的事情,并以相同的顺序进行评估。

对我来说没有什么特别的,但第二个使代码更嵌套,我想一般避免。 两者都有相同的效果。