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

C语言华氏度转摄氏度代码浮点输出仅显示整数问题求助

问题排查结论

核心原因

你遇到的问题由同一作用域下重复定义同名变量导致:

  • 第一版代码里已经在main函数开头声明了float faren,c;,后续计算温度的代码行又写了float c = (faren - FREEZING_PT)*FACTOR;,属于重复声明变量c。
    • 若你使用的编译器遵循C99及以上标准:这行代码会创建一个和外层c同名的独立新变量,你计算的正确结果存储在这个新变量中,但外层原本声明的c始终没有被赋值、处于未初始化的随机状态,你printf语句输出的是外层未初始化的c,因此出现结果异常。
    • 若你使用的编译器遵循老旧的C89标准:C89要求所有变量必须在代码块最开头声明,你在scanf这类执行语句后声明变量本身属于语法错误,部分兼容编译器会直接忽略这行的float关键字,导致赋值逻辑异常,最终得到错误输出。
  • 你修改后的代码删除了第二次声明前的float关键字,相当于直接给已经声明完成的变量c赋值,逻辑完全正确,即可正常输出小数结果。

开发建议

编译代码时建议开启警告参数(例如GCC使用-Wall -Wextra参数),编译器会直接提示变量重复定义、变量未初始化这类基础错误,能大幅提升你排查问题的效率。

内容的提问来源于stack exchange,提问作者thehumbling

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:15:00