我想知道以下两个陈述是否相同,如果没有,为什么不。感谢。
1)
if (score >= 90)
printf("A");
else if (score >= 80)
printf("B");
else if (score >= 70)
printf("C");
else if (score >= 60)
printf("D");
else
printF("F");
2)版本1
if (score < 60)
printf("F");
else if (score > 70)
printf("D");
else if (score > 80)
printf("C");
else if (score > 90)
printf("B");
else
printf("A");
2)第2版
if (score < 60)
printf("F");
else if (score < 70)
printf("D");
else if (score < 80)
printf("C");
else if (score < 90)
printf("B");
else
printf("A");
对不起,我在第二个选项中拼错了。它们现在相同吗?
答案 0 :(得分:7)
他们不是公平的。
例如,假设您的“得分”为95 - 在第一个选项中,您将打印“A”,但在第二个选项中,您将打印“D”......
现在,我怀疑上面有一个拼写错误。如果您将第二个示例中的所有比较切换为&lt;而不是&gt;,然后他们将打印相同的答案。
但是,它们仍然不等同(至少在编译器优化之前)。有一些微妙的差异。例如,第二个将比第一个更快地返回“D”,但第一个将更快地返回“B”。当然,这是一个非常微妙的差异,但它们是不同的。
编辑:基于编辑,怀疑上面的拼写错误是正确的。见下半部分仍有差异。
这些将打印相同的值,但它们不相同。
答案 1 :(得分:3)
不,插入值99,看看两种情况都会发生什么。
首先,您会看到A
,第二个D
。
现在,如果所有>
<
在第二段代码中都是>
,那可能是一个不同的故事(轻推,轻推,眨眼,眨眼,点头和眨眼就好了盲目蝙蝠,不再说了。)
现在,根据您的修改,(根据建议将<
更改为{{1}}),他们等同于。无论如何,在产量方面。还有很多其他的东西可能仍然不同,例如在每个人都失败的情况下的表现: - )
但是,我假设输出是你感兴趣的。
答案 2 :(得分:2)
他们不是。在第二组70,80和90次测试中反转比较。
答案 3 :(得分:0)
没有。如果得分是95,那么第二个例子将打印“D”,而第一个例子将打印“A”。