c的小问题~!

来源:百度知道 编辑:UC知道 时间:2024/06/20 17:03:36
#include"stdio.h"
void main()
{
double a=1,b;
for(b=1;b<100;b++)
printf("%d\n",a=a*2);
}

结果为什么都是0啊?

先谢谢各位啊~
看来我的编译器挺强悍嘛,虽然没有溢出,但是只有17位有效数字,哈

https://gss0.baidu.com/7LsWdDW5_xN3otqbppnN2DJv/%90%5B%DF%52%EC%FB%BB%B6%9B%6D/pic/item/302c178863753889a4c272b6.jpg

double a=1,b; a定义的是double型,但是printf("%d\n",a=a*2) 中%d是指输出整数,类型不匹配,应该改为%f

double 为双精度实数,对应的符号为%f,还有就是。你的运算结果为2的100次方,估计是太大了。电脑计算不了,结果溢出。。你把10改小点就行了。。你的程序即使是大型计算机都很难算到那么多次方

printf("%d\n",a=a*2);
改成printf("%lf\n",a=a*2);
格式不匹配,%d找不到对应的变量
上面471084901说的溢出也对。

void main()
{
int a=1,b;
for(b=1;b<100;b++)
printf("%d\n",a=a*2);
}

或者

void main()
{
int a=1,b;
for(b=1;b<100;b++)
printf("%f\n",a=a*2);
}