C++ 链接if和x27之间的差异;s,否则如果

C++ 链接if和x27之间的差异;s,否则如果,c++,C++,所以我有一个问题,我现在已经有很长时间了,使用else-if和链式if语句之间有什么区别,它们产生的不是相同的东西吗?例如,以这个基本示例为例: 短龄{0}; 性病:cin>>年龄; 如果(年龄>18)cout 18)cout在您的特定示例中,它们是相同的(注意:问题已编辑;现在它们不是)。不管怎样,考虑一下: 示例1:修改变量 与: age = 20; if (age > 19) ...; // executes else if (age > 17) ...; // skippe

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


短龄{0};
性病:cin>>年龄;

如果(年龄>18)cout 18)cout在您的特定示例中,它们是相同的(注意:问题已编辑;现在它们不是)。不管怎样,考虑一下:

示例1:修改变量 与:

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

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

e、 g

age=10

如果(年龄>18岁)不能11)不能相关(可能是重复):假设编译器没有优化它,第一个执行一个额外的测试,当年龄大于18岁时不需要。@Fran我意识到这是return的测试,这有点不同(这就是我收回投票的原因)。我认为这可能是一个更好的欺骗目标(尽管是Java):@scohe001重新打开。哦,我的意思是添加第二个链接,@Fran。我同意这个问题不应该一直悬而未决(尽管撤回后我不能投票),但第一个
的主体如果必须修改任何内容,条件可能会从一开始就重叠。正确的说法,糟糕的例子。。从你的例子中,我看不出它有什么帮助。
age = 19;
if (age > 18) age = 17; // executes
else if (age < 18) ... // skipped!
age = 20;
if (age > 19) ...; // executes
if (age > 17) ...; // executes!
age = 20;
if (age > 19) ...; // executes
else if (age > 17) ...; // skipped!
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"
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"