我有一个朋友正在从一本书中学习一个例子,他做了像
这样的代码#include<stdio.h>
#include<math.h>
#pragma warning(disable:4996)
int main()
{
float numGrade;
printf("\n\nPlease enter your numerical grade: ");
scanf("%f", &numGrade);
if (numGrade >= 90)
printf("\nYou got an A.\n\n");
else if (90 > numGrade >= 80)
printf("\nYou got a B.\n\n");
else if (80 > numGrade >= 70)
printf("\nYou got a C.\n\n");
else if (70 > numGrade >= 60)
printf("\nYou got a D.\n\n");
else if (60 > numGrade)
printf("\nYou got an F.\n\n");
else
printf("\nThis is an invalid grade!\n");
}
这样做是否有任何问题,或者他应该这样做:
int main()
{
float numGrade;
printf("\n\nPlease enter your numerical grade: ");
scanf("%f", &numGrade);
if (numGrade >= 90)
printf("\nYou got an A.\n\n");
else if (90 > numGrade && numGrade >= 80)
printf("\nYou got a B.\n\n");
else if (80 > numGrade && numGrade >= 70)
printf("\nYou got a C.\n\n");
else if (70 > numGrade && numGrade >= 60)
printf("\nYou got a D.\n\n");
else if (60 > numGrade)
printf("\nYou got an F.\n\n");
else
printf("\nThis is an invalid grade!\n");
}
答案 0 :(得分:2)
第一个例子根本不起作用。
每个测试中的第一个比较将返回0或1.所以它总是会失败第二个。
编辑:
但是,程序可能仍然按照需要的方式“工作”,只是因为不需要在每个测试中进行第二次比较。