Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 多个if语句和else-if语句之间有区别吗?_C_If Statement - Fatal编程技术网

C 多个if语句和else-if语句之间有区别吗?

C 多个if语句和else-if语句之间有区别吗?,c,if-statement,C,If Statement,如果我写 int a = 1; int b = 2; if (a == b) { //Do something } else if (a > b) { //Do something else } else if (a < b) { //Do something else } inta=1; int b=2; 如果(a==b){ //做点什么 }否则,如果(a>b){ //做点别的 }否则如果(ab){ //做点别的 } if(ab 检查上述场景中的a是否相同,但速度不

如果我写

int a = 1;
int b = 2;

if (a == b) {

//Do something

} else if (a > b) {

//Do something else

} else if (a < b) {

//Do something else

}
inta=1;
int b=2;
如果(a==b){
//做点什么
}否则,如果(a>b){
//做点别的
}否则如果(a
与之相反:

if (a == b) {

//Do something

}
if (a > b) {

//Do something else

}
if (a < b) {

//Do something else

}
if(a==b){
//做点什么
}
如果(a>b){
//做点别的
}
if(a

编译器解释代码的方式或速度有区别吗?我看不出逻辑上的区别,但肯定有一个原因为什么存在if-else语句。这只是一个换行差异。

else if
语句中,当满足条件时,跳过所有其他
else if
语句

而在多个if语句中,它必须遍历所有if语句

更准确地说,让我们假设
a=b

考虑您的第一个代码块:

int a = 1;
int b = 1;
if (a == b) 
{
    //Do something
} 
else if (a > b) 
{
    //Do something else
} 
else if (a < b) 
{
    //Do something else
}
int a = 1;
int b = 1;
if (a == b) 
{
     //Do something
}
if (a > b) 
{
    //Do something else
}
if (a < b) 
{
    //Do something else
}
即使满足第一个条件,也将对所有条件进行评估

  • 检查
    a=b

  • 执行代码块

  • 检查
    a>b


  • 检查上述场景中的
    a是否相同,但速度不同
    If
    /
    else
    将比一系列
    If
    s快,因为如果满足
    If
    条件,则跳过
    else
    语句。另一方面,在一系列
    if
    s中,每个条件都单独评估

    当然,在其他场景中,逻辑是不同的,因此用一系列的
    if
    /
    else
    替换
    会中断程序。例如:

    // this:
    if(x <= 0) {
        x = 1;
    }
    else { // only true if x started out > 0
        x = 37;
    }
    
    // is different from this:
    if(x <= 0) {
        x = 1;
    }
    if(x > 0) { // always true in this version
        x = 37;
    }
    
    //这是:
    if(x0
    x=37;
    }
    //与此不同的是:
    如果(x 0){//在此版本中始终为true
    x=37;
    }
    
    在您编写的第二类代码中。编译器将显示每个true语句的输出,并且不会跳过任何条件。Else命令用于确保两个条件中的一个条件匹配。

    与多个if语句相比,if Else语句的时间复杂度更低。因此,if Else语句非常有利

    这会提高速度吗?可能会重复