有人可以解释与此循环有关的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);
}
答案 0 :(得分:0)
欢迎使用StackOverflow M.B。
C中的while
循环在每个循环之前评估其中的true
或false
。
使用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并且循环结束