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

为何使用printf时出现double*与格式符不匹配的类型警告?

问题原因与解决方法

警告产生的原因

printf的格式符%lf是用来输出double类型的数值的,但你调用时传入的&S和&P是double*类型的指针(也就是变量S、P在内存中的地址),两者类型不匹配,所以编译器抛出了类型兼容警告。

消除警告的两种方案

场景1:输出变量S和P的数值(最可能的需求)

直接传入变量本身即可,不需要取地址:

printf("The average and sum of the variables: %lf %lf", S, P);

你代码里定义了指针pSum和pAverage,如果想用指针访问数值,也可以通过解引用操作符*获取指针指向的变量值:

printf("The average and sum of the variables: %lf %lf", *pSum, *pAverage);

场景2:输出变量S和P的内存地址

如果你的目的是打印变量的地址(指针值),需要把格式符换成%p,同时将指针转换为void*类型保证可移植性:

printf("The addresses of S and P: %p %p", (void*)&S, (void*)&P);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:05:59