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

C语言用scanf(%f)读取int变量计算矩形面积输出0问题

问题产生原因
  • 核心问题是变量类型与格式化输入输出的格式说明符不匹配,触发了C语言的未定义行为:
    1. 你声明的l、b都是int整型变量,但scanf中使用了仅适用于浮点型的%f格式符,输入的数值会按照浮点型的内存布局写入整型变量的内存空间,无法正确存储为你输入的整数值。
    2. 后续计算l*b得到的结果仍是整型,printf中又用%f解析整型数值的内存空间,自然会输出错误的0.000000结果。
修复方案

有两种常见修复方式,按需选择即可:

方案1:保持变量为整型,修改格式说明符

如果只需要计算整数输入的矩形面积,把scanf的%f改为%d、printf的%f改为%d即可:

#include <stdio.h>

int main()
{
    int l, b;
    printf("Enter the length of the rectangle: ");
    scanf("%d", &l);

    printf("Enter the breadth of the rectangle: ");
    scanf("%d", &b);

    printf("Area of rectangle is %d", l * b);
    return 0;
}

方案2:修改变量类型为浮点型,适配现有格式说明符

如果需要支持小数边长的计算,把l、b的类型改为float即可:

#include <stdio.h>

int main()
{
    float l, b;
    printf("Enter the length of the rectangle: ");
    scanf("%f", &l);

    printf("Enter the breadth of the rectangle: ");
    scanf("%f", &b);

    printf("Area of rectangle is %f", l * b);
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:36:01