【发布时间】:2022-10-24 05:44:20
【问题描述】:
我现在正在学习 C,我知道我不能像这样添加带小数的整数:
#include <stdio.h>
int main() {
printf("%d",15+9.0);
return 0;
但是,在运行此程序时,我预计会出现某种错误。相反,我得到了一个奇怪的输出:
-1866308488
有人可以帮我理解为什么它给了我这个输出吗?
【问题讨论】:
-
有人可以帮我理解为什么它给了我这样的输出吗?-- 当你指定
%d格式说明符时,你对printf撒谎并给它一个double而不是int。 -
%d格式说明符需要int。如果您传递double,它将无法正确提取和解释参数。使用%f或%g格式化double。 -
我知道我不能添加带小数的整数不,那不是真的。你绝对能够添加一个整数和一个浮点数,例如
9.0。但结果是一个浮点数,所以必须使用%f或%e打印它。%d用于打印整数。 -
如果您的编译器没有像
warning: format specifies type 'int' but the argument has type 'double'那样给您警告,但应该提高编译器的警告级别,或者获得更好的编译器。
标签: c