首页 新闻 会员 周边 捐助

C中循环与控制结合使用应该如何逻辑分析每一步的指令

0
悬赏园豆:15 [已解决问题] 解决于 2015-08-01 13:18
#include<stdio.h>
int main()
{
    int age = 20;
    while (age++ <= 65)
    {
        if ((age % 20) == 0)
            printf("Here is %d age!!!bom lalakala\n", age);
        if (age = 65)
            printf("here is my %d age\n", age);

    }
    return 0;
}

 

age=20时满足||if((age%20)==0)应该执行该语句下对应的printf语句,但是并没有,为什么呢?

age是一个在递增的过程,他却始终(age<65时)第二个if语句,并且陷入死循环,这是问什么?

C
资深呆的主页 资深呆 | 初学一级 | 园豆:37
提问于:2015-07-31 13:27
< >
分享
最佳答案
0

首先两个错误,第一个楼上已经说l

#include<stdio.h>
int main()
{
    int age = 20;
    while (age++ <= 65)//判断时age=20
    {
        //age++之后age=21,所以第一句不满足
        if ((age % 20) == 0)
            printf("Here is %d age!!!bom lalakala\n", age);
        if (age = 65)
            printf("here is my %d age\n", age);

    }
    return 0;
}
收获园豆:15
MrNice | 老鸟四级 |园豆:3468 | 2015-07-31 14:11

这是C primer plus上的一道练习题,没有执行第一if语句是为什么?而是直接跳转在第二个if句中,(age变量是在递增中执行第二语句吗?)

资深呆 | 园豆:37 (初学一级) | 2015-07-31 14:16

@振宁: 第一次进程序时,由于age++的,age=21,第一个if语句不满足,此时会走到第二个if,由于你在判断age是不等于65时,你把判断语句if(age==65),写成了赋值if(age=65),所以会执行第二条if;

第二次while判断时,age就变成了65,age++,age=66,第一条if不成立,就直接走到了第二条if,所以造成了死循环

MrNice | 园豆:3468 (老鸟四级) | 2015-07-31 14:23

@MrNice:自增运算符age++,在执行age++<=65后,age=20执行完一次后,在进入循环体后就是age=21(跟是否完成一次完整语句指令无关),是不是这样理解

资深呆 | 园豆:37 (初学一级) | 2015-07-31 18:09
其他回答(1)
0

 if (age = 65)

Launcher | 园豆:45050 (高人七级) | 2015-07-31 13:34

为什么? age=20时他是满足第一个if语句,为什么没执行第一个语句

支持(0) 反对(0) 资深呆 | 园豆:37 (初学一级) | 2015-07-31 13:41

@振宁: 你在第一个 if 那里设置个断点,你看看 age 的值是多少。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-07-31 13:44

@Launcher: 还是输出第二个语句;;

支持(0) 反对(0) 资深呆 | 园豆:37 (初学一级) | 2015-07-31 14:10

@振宁: 你在第一个 if 那里设置个断点,你看看 age 的值是多少

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-07-31 14:15

@Launcher: 等于66.。。。。

支持(0) 反对(0) 资深呆 | 园豆:37 (初学一级) | 2015-07-31 14:21

@振宁: 66 % 20 == 0 ?

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-07-31 14:24

@Launcher: 在age=20时,进入while循环的(age++<=20)条件时,在准备执行循环时age就变成age=21,然后一下子跳转到age=65.。。。。。懵了

支持(0) 反对(0) 资深呆 | 园豆:37 (初学一级) | 2015-07-31 18:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册