链式 if 和 else if 之间的区别



所以我有一个问题,我现在已经有很长时间了,使用else-if和链式if语句之间有什么区别,它们不是产生相同的东西吗?举个例子:


short age {0};
std::cin >> age;
if(age > 18) cout << "You are an adult";
if(age < 18) cout << "YOu are a teen";
if(age == 0) cout << "YOu are born";


short age {0};
std::cin >> age;
if(age > 18) cout << "You are an adult";
else if(age < 18) cout << "YOu are a teen";
else if(age == 0) cout << "YOu are born";

它们有什么不同?

在您的特定示例中,它们是相同的(注意:问题已编辑;现在它们没有编辑(。无论如何,考虑一下这样的东西:

示例1:修改变量

if (age > 18) age = 17; // executes
if (age < 18) ... // executes!

现在你可以看到,这将与不同

age = 19;
if (age > 18) age = 17; // executes
else if (age < 18) ... // skipped!

示例2:重叠条件

或者正如@cubic提到的,如果条件重叠,也会有差异。

age = 20;
if (age > 19) ...; // executes
if (age > 17) ...; // executes!

对比:

age = 20;
if (age > 19) ...; // executes
else if (age > 17) ...; // skipped!

如果使用链接的if语句。将执行all-if语句。但是如果你使用if-else-if,那么它将只执行真正的语句

例如

age = 10
if(age > 18) cout << "you are an adult"
if(age < 18 && age > 11) cout << "your are not an adult"
if(age < 11 ) cout << "you are a child"

在这种情况下,所有三个if语句都将运行

但在其他情况下

age = 12
if(age > 18) cout << "you are an adult"
else if(age < 18 && age > 10) cout << "your are not an adult"
else if(age < 10 ) cout << "you are a child"

仅第一个if将检查,然后第二个其他if(年龄<18&&年龄>10(它不会检查最后一个条件,因为它找到了他想要的条件。

最新更新