从C书练习

时间:2011-01-25 02:55:42

标签: c if-statement

我想知道以下两个陈述是否相同,如果没有,为什么不。感谢。

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

对不起,我在第二个选项中拼错了。它们现在相同吗?

4 个答案:

答案 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”。