鱼C论坛

 找回密码
 立即注册
查看: 1474|回复: 8

[已解决]这段代码是死循环吗?为什么不出结果

[复制链接]
发表于 2017-7-29 14:08:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

#define M 4000000
#define N 500000

int main()
{
        int count = 0;
        double a;
        while (a >= 0);
        {
                a = M + M * 0.08;//M += M*0.08;
                a = a - N;//M -= N;
                count++;//count++;
        }
        //while (a >= 0);

        printf("小家鱼需要%d年才会败光所有家产!\n",count);
        printf("%e\n",a);

        return 0;
}
最佳答案
2017-7-29 14:14:22
是死循环
a = M + M * 0.08;
m是固定值,每次循环a都被重新赋值,所以每次判断都是a都是大于0的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-29 14:14:22 | 显示全部楼层    本楼为最佳答案   
是死循环
a = M + M * 0.08;
m是固定值,每次循环a都被重新赋值,所以每次判断都是a都是大于0的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-29 14:16:15 | 显示全部楼层
13960672142 发表于 2017-7-29 14:14
是死循环
a = M + M * 0.08;
m是固定值,每次循环a都被重新赋值,所以每次判断都是a都是大于0的

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-29 14:22:16 | 显示全部楼层
本帖最后由 lizhiyong_11 于 2017-7-29 14:23 编辑
13960672142 发表于 2017-7-29 14:14
是死循环
a = M + M * 0.08;
m是固定值,每次循环a都被重新赋值,所以每次判断都是a都是大于0的


初始条件,double a =4000000;然后 将M改为a也不对是为什么呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-29 14:26:23 | 显示全部楼层
lizhiyong_11 发表于 2017-7-29 14:22
初始条件,double a =4000000;然后 将M改为a也不对是为什么呢?

你把while后面的分号删了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-29 14:34:00 | 显示全部楼层
13960672142 发表于 2017-7-29 14:26
你把while后面的分号删了

谢谢已经搞定了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-29 15:20:21 | 显示全部楼层
13960672142 发表于 2017-7-29 14:26
你把while后面的分号删了
#include<stdio.h>

int main()
{
        int i = 3;
        long a = 2;
        while(i <= 14)
        {
                a = a * a;

                i++;
        }
        printf("两年之后可以繁殖%d只兔子!\n",a);
        printf("两年之后可以繁殖%d 只兔子!\n",i);

        return 0;
}
你好可以在问你一个问题吗?这个程序为什么打印的是 , 可以繁殖0只兔子,?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-29 15:31:06 | 显示全部楼层
lizhiyong_11 发表于 2017-7-29 15:20
你好可以在问你一个问题吗?这个程序为什么打印的是 , 可以繁殖0只兔子,?

i=7的时候 a=65536
a=a*a  65536*65536=4294967296  二进制是100000000000000000000000000000000
long存储不了这么大的数据会截断成long能存储的位数,所以a*a=0

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
lizhiyong_11 + 5 + 5 + 3 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-7-29 17:03:03 | 显示全部楼层
13960672142 发表于 2017-7-29 15:31
i=7的时候 a=65536
a=a*a  65536*65536=4294967296  二进制是100000000000000000000000000000000
long ...

嗯嗯谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 12:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表