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
相关产品推荐
相关产品推荐

