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

C语言scanf格式匹配警告:%f期望float*,参数为double如何修复?

修复scanf格式符与double类型不匹配的警告

问题出在格式符和变量类型不兼容:你的结构体stock_t里,valor和yield是double类型,但你在scanf里用了%f——这个格式符专门对应float*类型的参数,传入double*类型的地址就会触发警告。

给你两种简单的修复方式:

方式一:修改格式符为%lf

scanf中,%lf是专门用来读取double类型变量的格式符,直接把那两行代码改成这样:

scanf("%lf", &stocks[i].valor);
scanf("%lf", &stocks[i].yield);

这种方式不需要改动变量类型,最直接。

方式二:修改变量类型为float

如果你不想改格式符,可以把结构体里的成员类型改成float,和%f对应:

typedef struct {
    char nome[MAX_NAME];
    float valor;
    float yield;
} stock_t;

小提醒

注意区分printf和scanf的格式符:printf里%f可以同时处理float和double(因为float会自动转换为double),但scanf必须严格对应——float用%f,double用%lf,别搞混。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:53:11