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

C语言中int与double类型求和结果打印方法及代码输出异常排查

C语言int与double求和相关问题解答

问题1:如何实现int与double求和后的结果打印?

这事儿其实挺简单的,C语言本身会帮你处理类型转换——当int和double进行运算时,int会被自动提升为double类型,求和结果天然就是double,直接打印就行。给你写个示例代码:

#include <stdio.h>

int main() {
    int myInt = 8;
    double myDouble = 12.3;
    // 这里sum会被自动推导为double类型(C11及以上支持auto),也可以显式声明double sum
    auto sum = myInt + myDouble;
    // 用%lf格式符打印double类型,想要控制小数位数就用%.2lf这种写法
    printf("求和结果:%lf\n", sum);
    printf("保留两位小数:%.2lf\n", sum);
    return 0;
}

额外提一句:如果想让代码可读性更强,也可以手动把int转成double,比如(double)myInt + myDouble,效果完全一样。

问题2:代码输出0.000000而非20.5的错误排查

先把你的代码贴出来看一眼:

int testInt= 10; double testDouble = 10.5; auto testSum = testInt + testDouble; printf("%lf\n",&testSum);

核心错误出在printf的参数传错了!你写的&testSum是取testSum的内存地址(指针),但%lf格式符要求的是double类型的数值,不是指针。这就导致printf读错了内存区域,自然输出了错误的0.000000。

另外提个小细节:auto关键字在C11才开始支持自动类型推导,虽然这里推导testSum为double是对的,但如果你的编译器版本比较老可能会报错,学习阶段建议显式声明double testSum更稳妥。

修正后的代码如下:

#include <stdio.h>

int main() {
    int testInt = 10;
    double testDouble = 10.5;
    double testSum = testInt + testDouble;
    // 去掉&,直接传testSum的数值
    printf("%lf\n", testSum);
    return 0;
}

运行这个代码就能得到你想要的20.500000啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 17:13:15