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

