程序设计比赛中发现的问题

  今天学校举行程序设计比赛,我用的是C语言,在比赛的过程中我犯了一个以前没有注意到的错误:类型转换。

  错误代码如下:

   float a;
   scanf("%lf",&a);
   printf("%f",a);

  当输入1的时候,输出结果为0.000000。

  改成下面这样:

   double  a;
   scanf("%f",&a);
   printf("%lf",a);

  输入为1的时候,输出结果仍为0.000000。

  我推测可能的原因是,scanf函数不会自动进行类型转换。

  绝对正确的写法应该是:

   float a;
   scanf("%f",&a);
   printf("%f",a);

  以及,

   double a;
   scanf("%lf",&a);
   printf("%lf",a);

  要用类型转换的话:

   float a;
   scanf("%f",&a);
   printf("%lf",a);

  double a;
   scanf("%lf",&a);
   printf("%f",a);

  所以,教训就是,scanf()函数的格式控制说明必须与变量类型一致,而printf()函数在单精度和双精度之间可以自由转换,而不需要强制类型装换。

  (本人知识尚浅,如有错误,敬请指正。)

猜你喜欢

转载自www.cnblogs.com/DCFV/p/9959052.html
今日推荐