关于C语法的问题

时间:2011-09-13 03:12:50

标签: c

我有一个朋友正在从一本书中学习一个例子,他做了像

这样的代码
#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");
}

1 个答案:

答案 0 :(得分:2)

第一个例子根本不起作用。

每个测试中的第一个比较将返回0或1.所以它总是会失败第二个。

编辑:

但是,程序可能仍然按照需要的方式“工作”,只是因为不需要在每个测试中进行第二次比较。