黑马程序员技术交流社区

标题: 来分析下这个while(1)死循环 [打印本页]

作者: 驴小叔    时间: 2015-8-31 21:33
标题: 来分析下这个while(1)死循环
#include <stdio.h>

int main(int argc, const char * argv[]) {
    int y=5;
    do{
        
        y--;            
    }while(--y);      
    printf("%d\n",y--);
    return 0;
}

作者: coding_wang    时间: 2015-8-31 22:18
第一次循环时到 while(--y); 这句前,y=4,判定while时 先剪后判 为 while(3)
第二次同理 到while语句前为2, 判定时为1
到了第三次 判定时为-1

由于while语句只有在判定为0时结束,所以,整个就成了死循环.

假设 这个y的初始值为6   则跳出循环时  y为0 ,输出的结果也为0

设a=1
主要在于 a++ 在执行语句时,a为原值1,   ++a在执行语句时 a为a+1的值2    语句执行后 a的值都为a+1=2

即执行语句的状态下     a++字母在前则用原值    ++a符号在前则用+1后的值




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2