嵌套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
如果condition1
和condition2
计算为非零( true
),则只会执行//some code
。
第一个, if(condition 1 && condition 2)
,只能包含一个else部分,假设您的代码在两个条件都正确或两者都错误的情况下工作。 在另一部分中,您可以有两个其他部分,每个部分用于每个条件的失败,从而增加问题的范围。
他们做同样的事情,并以相同的顺序进行评估。
对我来说没有什么特别的,但第二个使代码更嵌套,我想一般避免。 两者都有相同的效果。