问下这题 输出结果是 3 我 怎么算出来是 3 2 1?

C语言 while(!x);是什么意思?
main()
{int x=3;
do 
{printf("%d",x--);
}
while(!x);
}
是不是 while(!x)和 do while(!x)的 意思是不一样的 ?求教!

弑天下
浏览 94回答 3
3回答

慕工程0101907

while()是循环语句。while(expr)表示当逻辑表达式expr为真时,循环运行循环体,直到expr值为假或遇到break语句时退出。!x是逻辑非操作,当x为0时,值为真,否则值为假。 在这里等效于x==0。在while(!x)后面有一个分号,表示该循环的循环体为空,即只做判断和循环,并不执行操作。于是这句的意思就是,如果x为0,则一直循环下去,不做操作,否则继续执行。如果没有其它线程来改变x的值,那么这里就是一个死循环了。

幕布斯7119047

while(!x)后面有一个分号,表示该循环的循环体为空,即只做判断和循环,并不执行操作。!是反运算符,单目,!真 即 假,!假 即 真。如果x != 0, 则 !x 为 0,即假,如果x == 0,则 !x 为 真。while()是循环语句。while(expr)表示当逻辑表达式expr为真时,循环运行循环体,直到expr值为假或遇到break语句时退出。!x是逻辑非操作,当x为0时,值为真,否则值为假。 在这里等效于x==0。 

当年话下

!是反运算符,单目,!真 即 假,!假 即 真。如果x != 0, 则 !x 为 0,即假,如果x == 0,则 !x 为 真。while循环和 do-while 循环的区别在于,while是先检查是否复合条件再循环,而do-while循环则是在循环体尾检查是否符合条件,这就说明,do-while循环内的语句至少被执行一次。这好比下面的例子do{吃一个三明治 ←←←←← Statement;我饿吗?(饿,再吃一个三明治↑)(不饿,退出循环↓) }while();←←←←←←←←←这就意味着,你至少得吃一个三明治。如果使用while循环,则像下面这样我饿吗?(饿,吃↓)(不饿↓) while() {吃一个三明治 ← ↓ statement;}  ←这说明,你不一定吃一个三明治。这就是while跟do-while的区别。。。=、=
打开App,查看更多内容
随时随地看视频慕课网APP