从C书练习

Fac*_*u T 1 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");
Run Code Online (Sandbox Code Playgroud)

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");
Run Code Online (Sandbox Code Playgroud)


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");
Run Code Online (Sandbox Code Playgroud)

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

Ree*_*sey 7

他们不是平等的.

例如,假设您的"得分"为95 - 在第一个选项中,您将打印"A",但在第二个选项中,您将打印"D"...

现在,我怀疑上面有一个拼写错误.如果将第二个示例中的所有比较切换为<而不是>,则它们将打印相同的答案.

但是,它们仍然不等同(至少在编译器优化之前).有一些微妙的差异.例如,第二个将比第一个更快地返回"D",但第一个将更快地返回"B".当然,这是一个非常微妙的差异,但它们是不同的.


编辑:基于编辑,怀疑上面的拼写错误是真的.请参阅下半部分仍然存在的差异.

这些将打印相同的值,但它们不相同.