执行以下程序后输出的结果是

img


解释一下过程
答案是死循环
y=3然后减1 y=2然后减1 y=1减1输出结果为什么不为零

  • -y 不同于 y-- y-- 是先取值 后自减 --y先运算 再取值
    do 先执行一次y-- y成了2
    while中 --y 结果使y=1 1非0 所以循环继续 执行do
    do中 y-- y成了0
    while 中 --y y成了-1 -1非0 循环继续
    do中y-- y成了-2.。。所以死循环啊

#include <stdio.h>

int main(int argc, char** argv){
    int y=3;
    do
    {
        y--;
    
    }while(y--);
    
    printf("%d",y--);
    return 0;
  }

//执行步骤y的变化
//y=3初始值
//y=2在循环体内
//y=1在条件判断内
//y=0在循环体内
//y=-1在循环体内
//因为在while内没有出现0这个值,所以就是死循环!
//要想不死循环应该改
//while(--y)为while(y--)

要想循环结束while内判断必须要出现0,此题这样设计刚好跳过0了,所以死循环。

这个你自已用代码将y的结果输出就OK
1、将printf输入y的值放到do{}代码块里
2、再加一个读取输入语句
这样你就可以一进行跟踪看看y的值变化了