我正在尝试使此代码像一组选项一样工作。我已经对其进行了测试,无论我为moduleChoice输入什么内容,它都会直接带我gradeTestMain。有人可以解释我在做什么错吗?

int main (void)
{
    int moduleChoice=5;

    printf ("Please choose which module you would like to use.\n");
    printf ("press 1 for GradeTest version 1.1\n");
    printf ("press 0 to exit\n");
    scanf_s ("%d", &moduleChoice);

    if (moduleChoice == 1,
        gradeTestMain());
    if (moduleChoice == 0,
        printf ("Thank you for using GradeTest version 1.1! Have a great day!"));
    if (moduleChoice /= 1,0,
        printf ("That is not a valid choice. Please try again."));

最佳答案

if (moduleChoice == 1,
    gradeTestMain());


应该更改为

if (moduleChoice == 1)
    gradeTestMain();


对于其他if也是如此。

您需要将方括号括起来,否则就意味着

if (moduleChoice == 1, gradeTestMain());


意思是

if (moduleChoice == 1, gradeTestMain())
{
    ;
}


意思是。

评估moduleChoice == 1,丢弃结果,然后评估gradeTestMain()
然后检查gradeTestMain()的返回值是true还是false。但是同样,由于if内部没有任何内容,所以无论gradeTestMain返回true还是false,结果都是相同的。

另一件事是

if (moduleChoice /= 1,0,


不按照您的想法去做。将其更改为else。将以前的if更改为else if
所以你需要

if (moduleChoice == 1)
    gradeTestMain();
else if (moduleChoice == 0)
    printf ("Thank you for using GradeTest version 1.1! Have a great day!");
else
    printf ("That is not a valid choice. Please try again.");


投资一本书可能是一个好主意。

关于c - 我该如何工作? (C),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25820312/

10-12 03:52