咨询公司 三大:关于c的一个小问题

来源:百度文库 编辑:高校问答 时间:2024/05/11 03:15:14
#include "stdio.h"
void main()
{double a=0;
scanf("%f",&a);/*在tc++3.0下用debug看结果当运行完这步时a值仍为0为什么*/
}
to:湛蓝水晶
那你下面的正常又做何解释?
#include "stdio.h"
void main()
{float a=0;
scanf("%f",&a);/*运行完这步时a值完全正常*/

}

不同的编译器中运行的结果是不一样的。
这就是double变量的“下溢”(underflow)问题。
关于这个问题,一般的中文版的入门教材里很少涉及到,我现在看一本C primer plus 第5版里有很好的介绍.你可以找underflow的相关资料看看.

在tc2.0里是0.00000

因为scanf后面已经没有语句了,所以输入缓冲区没有被刷新(即输入的值仍然在缓冲区,没有被传到变量),所以实际上a的值并没有改变。