一道C++填空题

为什么?
2025-01-25 01:44:19
推荐回答(6个)
回答1:

循环体执行2次
第一次:x=x*x; //1=(-1)*(-1)
while (!(--x)); //--x,x=0,!0为真,即满足循环条件,进入下次循环
第二次:x=x*x; //0=0*0
while (!(--x)); //--x,x=-1,!0为假,即不满足循环条件,结束循环
所以,循环体执行2次

回答2:

do while 是先执行里面的结构体再做判断的,--x是先做--运算在使用x
题目先x=x*x,此时x=1,循环体执行一次,在判断!(--x),先--,即x=0,就是判断!(0)
!0是永远为真的,返回执行第二次循环体,此时x=x*x,x=0*0=0,判断!(--x)就是判断
!(-1)意思是 非(非零)就是假的,和等于0是一个意思的,此时跳出循环
所以循环体共执行2次

回答3:

x=-1在执行do后变成1 (-1乘-1=1)
然后在while里进行判断(!(-x)) =(!(-1))=1 为真,那就应该继续循环

回答4:

你这是!(--x)还是!(-x)啊?
如果是!(--x)就执行2次。
如果是!(-x)就执行一次。

回答5:

do 是先执行里面的结构体再做判断的 至少执行一次
while是先判断后执行结构体的 只有条件通过才会执行

回答6:

do while是执行再判断,当while条件不满足后将会终止循环,否则会进入下一轮循环