这段代码是死循环吗?为什么不出结果
#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;
}
是死循环
a = M + M * 0.08;
m是固定值,每次循环a都被重新赋值,所以每次判断都是a都是大于0的 13960672142 发表于 2017-7-29 14:14
是死循环
a = M + M * 0.08;
m是固定值,每次循环a都被重新赋值,所以每次判断都是a都是大于0的
{:10_277:} 本帖最后由 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也不对是为什么呢? lizhiyong_11 发表于 2017-7-29 14:22
初始条件,double a =4000000;然后 将M改为a也不对是为什么呢?
你把while后面的分号删了 13960672142 发表于 2017-7-29 14:26
你把while后面的分号删了
谢谢已经搞定了 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只兔子,? lizhiyong_11 发表于 2017-7-29 15:20
你好可以在问你一个问题吗?这个程序为什么打印的是 , 可以繁殖0只兔子,?
i=7的时候 a=65536
a=a*a65536*65536=4294967296二进制是100000000000000000000000000000000
long存储不了这么大的数据会截断成long能存储的位数,所以a*a=0 13960672142 发表于 2017-7-29 15:31
i=7的时候 a=65536
a=a*a65536*65536=4294967296二进制是100000000000000000000000000000000
long ...
嗯嗯谢谢
页:
[1]