以下是否存在差异(逻辑?性能?):
if(a==1)
{
if(b==2)
//some code
}
if(a==1 && b==2)
{
//same code
}
答案 0 :(得分:0)
if(a==1)
{
// Except you can place some code in here if you get in the first if-statement
if(b==2)
{
//you need to use curly brackets in the 2nd if statement to, except if you execute one line
of code.
}
}
答案 1 :(得分:0)
从很高的层面来看,编译器会将该代码转换为汇编代码,汇编器会将其转换为机器代码。我不确定不同的指令集架构可能会有什么不同,但对于我熟悉的那些,例如ARM和MIPS,没有办法在一行程序集中编写复合if语句。编译器基本上会转向
if(a == 1 && b == 1)
//some code
到
if(a == 1){
if(b == 1)
//some code
}
所以从逻辑或性能的角度来看无关紧要,特别是因为许多编译器无论如何都做了很多优化。但是就像Andreas所说的那样,您可以在嵌套示例中的第二个if语句之外添加其他代码,这可能会也可能不会影响嵌套条件的评估。
答案 2 :(得分:0)
没有逻辑差异。 “如果A和B然后......”在逻辑上与“如果A然后如果B那么......”相同......
有很多这样的等价物: p& (q | r)相当于(p& q)| (p& r)
如果您想进一步调查,请从 DeMorgan的法律开始