scanf无法存储用户输入?float类型变量输入输出异常求助
为什么你的float变量输出总是0.0000?
嘿,问题一眼就能看出来——你最后一行的printf调用写错啦!
你写的是:
printf("%f", &a);
这里的&a是变量a的内存地址,而不是a里存储的实际浮点数。printf的%f格式符要求传入的是一个float类型的数值,你把地址传进去,它会把这个地址的数值当成float来解析,这就导致输出了完全不符合预期的0.0000(不同环境下可能是其他奇怪的数,但肯定不是你输入的值)。
怎么修改?
把最后一行的&a改成a就搞定了!直接传入变量本身,让printf读取它存储的数值:
float a; printf("Enter a floating point number:\n"); scanf("%f", &a); // 这里用&a是对的,因为scanf需要通过地址往变量里写数据 printf("%f", a); // 这里去掉&,直接使用变量a
额外小技巧
如果想控制输出的小数位数(比如保留两位),可以这样写:
printf("%.2f", a);
这样输出会更整洁哦~
内容的提问来源于stack exchange,提问作者Kartusha
相关产品推荐
相关产品推荐

