循环的问题
大家请看:/***第五章5.10.3***/
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int i = 1;
int n;
printf("What out! Here come a bunch of fractions!\n");
while(i++<5)
{
n = i + 2;
printf("%f\n",n);
}
printf("That's all,folks!\n");
system("pause");
return;
}
运行:What out! Here come a bunch of fractions!
0.00000
0.00000
0.00000
0.00000
0.00000
That's all,folks!
肿么回事啊,救救
[解决办法]
while(i++<5) { n = i + 2; printf("%d\n",n);//改下这儿 }
[解决办法]
或者改成
printf("%f\n",(float)n);
[解决办法]
原因是:%f默认输出8字节double型 %d默认输出4字节 int型 如果一个整形用%f输出 则前面补4字节0 。而double中 第一位是符号位 后面11位是指数位 最后52位才是数据位 前面的数据位和符号位全部都是0,后面四个字节不管是什么 结果都是0 详情请查看double类型的存储结构
[解决办法]
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。