qq_31418607
qq_31418607
采纳率66.7%
2015-10-15 14:45

c循环语句简单的问题。。。

已采纳

int a=10;
do{a--;}while(a--);

为什么是无限循环?小括里到0不停么

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • a1193561652 纵横车 6年前

    a--是先用再减,所以一次循环while里面先判断a的值是否是0,再减一。

    点赞 评论 复制链接分享
  • tanjunchen 远方的飞猪 6年前

    依次a的值为9,7,5,3,1,-1不会为0

    点赞 评论 复制链接分享
  • coppersmith 喜哥 6年前

    int a=10;
    do{a--;}while(a--);
    为什么是无限循环?小括里到0不停么

    首先注意 a的类型是int,前面无unsigned ,大多编译器默认认为是一个有符号数,有符号数最高位为符号位,0值减1会为-1。
    再次 while(a--);语句,先判断while( a ),再执行a--。

    第1次 while判断时 a=9
    第2次 while判断时 a=7
    第3次 while判断时 a=5
    第4次 while判断时 a=3
    第5次 while判断时 a=1
    第6次 while判断时 a=-1
    ...........
    从以上归纳可知每次判断时a均为奇数,不可能为0,所以会无限循环下去。

    点赞 评论 复制链接分享
  • baidu_32047869 baidu_32047869 6年前

    虽然a--到0时那一次不进入循环,但紧接着a就到-1了,即为真,又开始循环

    点赞 评论 复制链接分享

相关推荐