You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:33:59