所以我有一个问题,我现在已经有很长一段时间了,使用 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)
它们有何不同?
在您的具体示例中,它们是相同的(注意:问题已编辑;现在它们不是)。无论如何考虑这样的事情:
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)
或者正如@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)