| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1186 人关注过本帖
标题:关于这个代码
只看楼主 加入收藏
autumnyellow
Rank: 2
等 级:论坛游民
帖 子:72
专家分:75
注 册:2015-4-14
收藏
得分:0 
age++是程序执行age后加1 , 后一个if中的65赋给a,然后while执行age=65进入循环,之后age+1是66,但是在循环中,65再次赋值给age,不是66了,这样不停的赋值将age=66改为age=65      所以一直输出65
2015-08-04 09:11
a笑红尘8
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-7-31
收藏
得分:0 
#include<stdio.h>

int main(void)
{
    int age = 20;
    while (age++ <=65)/*因为 ++ 优先级 高于 <=,所以先执行++即age=21*/
    {
        if ((age % 20) == 0)/**/
            printf("You are %d. Here is a raise.\n", age);
        if (age = 65)
            printf("You are %d. Here is your gold watch.\n", age);
    }
    return 0;
}
2015-08-04 09:11
冷曦。
Rank: 2
来 自:苏州
等 级:论坛游民
帖 子:20
专家分:22
注 册:2015-7-27
收藏
得分:0 
回复 8楼 li362490567
a++是在语句执行完后加、、、这是基础问题、如果你改成++a就是一次了、

毋伤他人、尽尔所欲~
2015-08-07 20:13
列车永不停息
Rank: 2
等 级:论坛游民
帖 子:76
专家分:48
注 册:2015-7-31
收藏
得分:0 
第一,当在未进入if语句的时候,age已经执行age++了。
第二,if是个判断语句啊,你赋值直接在if之前赋值就好了,或者是在if(age%20==0)这个语句里面赋值。
不是大家没有理解你的问题,而是你连最基本的还不知道。你应该多多去看书,多多实践。
2015-08-07 20:52
luqiyihui
Rank: 2
等 级:论坛游民
帖 子:12
专家分:21
注 册:2015-8-11
收藏
得分:0 
个人见解:

其实你没有理解 a++和++a的区别:程序是按照步骤来的,如果是a++的话,在那一行代码中,执行了a+1的动作,但a的值是不变的,下一行a才发生变化,变成a+1的值,++a则是在那一行已经发生了变化。所以如果你明白上面我说的意思,在你的程序中第二个if(age=65)相当于age被赋值为65,当进入while时,执行了 age++,既age+1,但没有赋值,因此此时的age仍为65,因此age<=65成立,进入循环体,此时age为66,但是第二个if中age重新赋值为65,条件成立,并打印。执行完后age为65进入while此时条件还成立,因此是死循环。
2015-08-13 14:51
快速回复:关于这个代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015888 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved