关于#c语言#的问题,请各位专家解答!

#include<;stdio.h>; void main( ) {int x=3; do { printf("%d ",x-=2); }while(!(--x)); }

输出 1 和 -2

首先明白:while(!(--x))可以等价于while(!B) ,B=--x即终极奥义是 :先x=x-1 ,再B=x,最后!B
第一次x=3 进do内 x-=2也就是x=x-2 =3-2=1 将它打印出
然后进while表达式:根据终极奥义 x=x-1=1-1=0 ,B=x=0 ,所以 !B=1 故while内结果为1
第二次进do内 x=x-2=0-2=-2 将它打印出
然后进while表达式:根据终极奥义 x=x-1=-2-1=-3 ,B=x=-3这是非零即=!0 ,所以while内!B= !(!0)=0
故停止

【若有帮助,望给个采纳,谢谢!】


int x = 3; 
do { 
    printf("%d ", x -= 2); 
} 
while (!(--x));

/*
    1)x=3
    2)先执行do里面的表达式
    3)x-=2,x=x-2 > x=3-2=1【输出14)代码按顺序执行到while
    5--x,此时,x=1-1=0
    6)!(x) > !(0) > 0=false,!(false)=true
    7)由于上一步是true,所以还会执行一次do里面的代码
    4)x-=2,x=0-2 > x=-2【输出-2】
*/

1跟-1吗

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^