帮忙看看这个入门级程序~

来源:百度知道 编辑:UC知道 时间:2024/05/14 05:05:52
#include <stdio.h>
int main(void)
{
float A = 0.0;
scanf ("%lf",A);
printf ("%ld",(long)A);
return 0;
}

这个程序,自己觉得,应该是先声明变量,然后读取float的数据,然后再转成long的数据。如果有小数部分的话就变成整数。我是想验证它是舍去小数部分还是四舍五入。但是无论我输入什么值,它的输出都是零。为什么??

Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\Administrator>C:\lcc\projects\lcc\tese.exe
2
0
C:\Documents and Settings\Administrator>C:\lcc\projects\lcc\tese.exe
54654.163165
0
我加了&啊。然后就输入数字,返回零后,它程序的使用权没返回给系统。我必须按Ctrl+C才能继续操作。如果输入字母的话就立刻返回零,然后权限返回给系统。但还是返回零啊

问题还是出在这句:scanf ("%lf",&A);
你前面定义的A是float型,而你输入的格式却是“%lf”,它代表double型,与A的数据类型不一致啊。!
有两种方法改成
1.将A定义成double型。
2.scanf ("%lf",&A);改写成scanf ("%f",&A);

scanf ("%lf",A); //应该是scanf ("%lf",&A);
个人比较奇怪为什么程序能够运行下去。一般漏了&的话,程序会报段错误。