#include
int main()
{
double a=0,b=0;
scanf("%f%d",&a,&b);
printf("%f\n%d\n",a,b);
system("pause");
return 0;
}
输出结果如图所示,为什么输入格式以浮点数形式输入不可以正确输出,而整形的可以
。。。怎么都是这种问题,你的读取操作和输出操作都是违法的,是未定义行为。你b是double类型,但是你读取的时候用%d,输出也用%d这些在标准中都说了是undefin的
。。。怎么都是这种问题,你的读取操作和输出操作都是违法的,是未定义行为。你b是double类型,但是你读取的时候用%d,输出也用%d这些在标准中都说了是undefin的
double对应的是%ld
这是其中对 float 和 double 的处理示例代码:
#include <stdio.h>
int main(void){
int a;
long b;
float f;
double d;
char c;
printf("\nint:%d\nlong:%d\nfloat:%d\ndouble:%d\nchar:%d\n",sizeof(a),sizeof(b),sizeof(f),sizeof(d),sizeof(c));
return 0;
}
定义的是double型,而输出的是"%d",还是多看看书吧,欲速则不达
通过编译程序如下
#include
void main()
{
float a=0;
int b=0;
scanf("%f%d",&a,&b);
printf("%f\n%d\n",a,b);
system("pause");
return 0;
}
数据类型和你的格式化输入串不匹配,改完就好了
double对应的是%ld
格式化输入不匹配,所以不行。
哪种类型的数据就用哪种类型的输出格式,不要把a类用b类输出
scanf的参数不对。
感觉应该这样写
#include
#include
main()
{
double a,b;
scanf("%lf%lf",&a,&b);
printf("%lf\n%lf\n",a,b);
system("pause");
return 0;
}
数据类型和你的格式化输入串不匹配,改完就好了
因为你的b是定义的double型,所以你的scanf输入时不能用%d 输入格式有问题
把%f改为%lf就好了,大致就是格式和实际变量的长度不一样。
格式不对,double型对应lf,如果你想成功赋值只需这样改
#include
int main()
{
double a=0,b=0;
scanf("%lf%d",&a,&b);
printf("%lf\n%d\n",a,b);
system("pause");
return 0;
}
你输入的时候多加空格了吧
好像没有%f的格式化输出者回事吧?
涉及字节的存储问题,如果float型4个字节,那么double型8个字节,对于double型变量a以%f输入,那么1这个数只占了a的低字节部分,高字节部分依然为0,然而a是以double型存储的,所以a的前半部分依然为0,以保留6位小数输出当然也是0