与while循环有关的c编程中的判断对错

时间:2016-10-31 00:49:25

标签: c

有人可以解释与此循环有关的c编程中的真假吗?

如果0为假Done = 0,并且while (!Done)假设为true且done = 1也为真,则done = 1如何导致循环“中断”或退出?

    done=0;
    while(!done)
    {
        c=getchar();
        switch(c)
        {
            case '1': 
            printf("Beverage  $8.00\n");
            total+= 8;
            break;

            case '2':
            printf("Candy       $3.00\n");
            total+= 3;
            break;

            case '3':
            printf("Sandwich $5.00\n");
            total+= 5;
            break;

            case '4':
            printf("Hot Dog.   $2.00\n");
            total+= 2;
            break;

            case '5':
            printf("Popcorn    $6.00\n");
            total+= 6;
            break;

            case '=':
            printf("Your choices are finished.\n");
            printf("The total is:$%.2f\n", total);
            printf("Please pay the cashier.\n");
            done=1;
            break;

            default:
            printf("I don't understand your choice, please try again.\n");
        }
    }
    return (0);
}

3 个答案:

答案 0 :(得分:0)

欢迎使用StackOverflow M.B。

C中的while循环在每个循环之前评估其中的truefalse

使用C编程时获得的一个保证是只有0是假,而其他一切都是真的。这意味着foobar为真,64为真,-1为真,在您的情况下,1为真。

正因如此,!运算符(not符号),它会将任何真实的内容更改为0,并将0更改为{1 1}}。

因此,你的while循环真正做的是说:
“虽然没有完成”
或“虽然做不成真”
或“完成是假的” 或“完成时为0”

因此,当您的'='的最后一个案例语句被命中,并且代码done=1;被运行时,您的代码将在下一次出现时退出并检查while循环的条件。

答案 1 :(得分:0)

你可以尝试

  

while(done!= 1)

,目前已完成= 0所以true完成后不等于1,一旦设置完成= 1,它将返回{{1}退出循环。

答案 2 :(得分:0)

最初完成是0所以!完成是!0是1 所以它的真实,在完成循环时设置为1!完成为0并且循环结束