int x=3;
do
{ printf("%3d",x-=2); }
while(!(- -x));
以上语句是怎样执行的?说详细点哦
int x=3;
do
{ printf("%3d",x-=2); }
while(!(- -x));
以上语句是怎样执行的?说详细点哦
步骤:x=3; --> 执行printf("%3d",x-=2);-->此时的x的值为1,打印出1,因为x-=2等价于x=x-2。-->判断
while()的表达式是否为真,因为“--”运算符优先级大于“!”逻辑非运算符,所以x先自减,这时候的x=0,进行逻辑非运算后,!0的值为1,所以条件为真再次执行printf("%3d",x-=2),上一次的运算可以得知x的值已经为0既x=0;所以这次打印出-2,然后进行条件判断,!(-2)的值为0,条件不成立,退出循环。
do{ 循环体 }while( 条件判断 ) 循环简单的说就是先执行循环体,再进行条件判断,条件成立则继续执行循环体,不成立则退出循环;
它与while( 条件判断 ){ 循环体 }相反,while(条件判断) 是先进行条件判断,再执行循环体
两者的差别是不管条件成不成立,do{...}while()的循环体最少也执行了一次,而while()里的循环体则不一定了。
1,先执行int x=3,
2,执行printf(“%3d”,x-=2)
3,因为第一次执行时x=1,又因为如果!(--x)=0就又执行printf(“%3d”,x-=2)
直到!(--x)=1就不做而结束循环。
int x=3; do { printf("%3d",x-=2); } while(!(- -x));
先执行输入语句输入x自减2之后的值1
在执行x自减判断是否为真,为真则继续执行,否则推出循环
反复执行,知道--x为假
1、执行int x=3; 2、执行printf("%3d",x-=2) //用三位位置显示x,x=x-2
3、判断(!(- -x)) //如果--x不等于0
4、如果成立则回到2,否则结束循环