c语言问题 求解释其中while (!b)的意思

2025-03-18 19:57:59
推荐回答(3个)
回答1:

在C语言中,0表示假,非0表示真。

while(!b)表示b等于0时,判断条件为真,执行循环体;否则为假,不执行。

非运算符(!)为单目运算符,具有右结合性。参与运算量为真时,结果为假;参与运算量为假时,结果为真。例如:!0为真;!9为假。
虽然C编译在给出逻辑运算值时,以“1”代表“真”,“0 ”代表“假”。但反过来在判断一个量是“真”还是为“假”时,以“0”代表“假”,以非“0”的数值作为“真”。

所以
当b=0; 则 !b 为真,while(!b)执行
当b!=0; 则 !b 为假,while(!b)不执行

====================================================================
现在分析下你的代码:
第一次进入循环体后,走
case 1: b=0;但这行没有break,故继续执行直到遇到break或执行完整个switch后退出,你的代码中执行到case 2: b=-1; break;这行

此时 b = -1;,跳出switch
继续执行
a=a+b;
b=2*a;
此后
a = 1 + -1 = 0;
b = 2 *0 =0;
继续执行到while (!b);

因为b=0;所以!b不等于0,此时条件判断为真,

程序第二次进入循环体
这时 a=0;b=0
执行default : b=1;跳出switch
继续执行
a=a+b;
b=2*a;
之后
a = 0 + 1 = 1;
b = 2 * 1=2;
继续执行到while (!b);

因为b=2;所以!b等于0,此时条件判断为假跳出while循环

所以代码的输出为: a=1, b=2

希望采纳!

回答2:

C语言值为0为假,非0为真。
!是求反操作,举例来说就是:!0为真,!5为假。
do--while 就是循环语句了
while (!b)也就是当b的值为0时继续循环,当值非0时结束循环。

希望帮到你。

回答3:

这是do while语句 当b不等于0的时候就会跳出循环