链式 if 和 else if 之间的区别

Ale*_*lex 2 c++

所以我有一个问题,我现在已经有很长一段时间了,使用 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";

Run Code Online (Sandbox Code Playgroud)


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";

Run Code Online (Sandbox Code Playgroud)

它们有何不同?

ten*_*our 5

在您的具体示例中,它们是相同的(注意:问题已编辑;现在它们不是)。无论如何考虑这样的事情:

示例 1:修改变量

if (age > 18) age = 17; // executes
if (age < 18) ... // executes!
Run Code Online (Sandbox Code Playgroud)

现在你可以看到这将与

age = 19;
if (age > 18) age = 17; // executes
else if (age < 18) ... // skipped!
Run Code Online (Sandbox Code Playgroud)

示例 2:重叠条件

或者正如@cubic 提到的,如果条件重叠,也会有所不同。

age = 20;
if (age > 19) ...; // executes
if (age > 17) ...; // executes!
Run Code Online (Sandbox Code Playgroud)

相对:

age = 20;
if (age > 19) ...; // executes
else if (age > 17) ...; // skipped!
Run Code Online (Sandbox Code Playgroud)