猿问

这个语句很简单,但是while括号里面的是很么意思

int x=3;

do

{

printf("%3d",x-=2);

}

while(!(--x));


qq_放声就去笑_1
浏览 1902回答 1
1回答

onemoo

while小括号中的控制表达式的求值为0(或者说逻辑为false)时会结束循环。这里的控制表达式是 !(--x):它最后运算的部分是 ! 表达式,! 表达式为 false 时会结束 while! 表达式为 false,也就是 --x 表达式不为0时。--x 表达式的值就是 x-1 的值,在第一次循环 do 部分执行过后,x 的值是 1,那么 --x 的值就是 0所以第一次循环时 !(--x) 为 true,会进行下一次循环。而在下次循环时,do 中 x 值会成为 -2,那么这次 while 的控制表达式值就是 false 了,才会结束循环。也就是说 do 会循环两次,打印出 x 的值分别是 1 和 -2。
随时随地看视频慕课网APP
我要回答