将整数打印为浮点数

Vig*_*ino 2 c floating-point

可能重复:
打印int作为float时printf的行为是什么?

int main()
{
 int x=4;
 int y=987634;
 printf("%f %f",x,y);
}
Run Code Online (Sandbox Code Playgroud)

在编译此代码时,我得到一个0.000000 0.000000的输出.难道不存在x和y到浮点数的类型提升吗?O/P不应该是4.000000和987634.000000吗?谁能帮我这个.Thanx提前.

pmg*_*pmg 5

转换发生在具有包含特定参数的原型的函数的参数上.原型printf()不包括第一个之后的特定参数

int printf(const char *format, ...);
Run Code Online (Sandbox Code Playgroud)

所以,一日一后没有参数都会自动转换,除了通过"默认参数转换"(基本上任何整数类型比低一级别的定义int,以int任何浮点类型比低一级别double,以double(谢谢你,帕斯卡尔Cuoq) ).您需要使用强制转换操作自己明确地转换它们

    printf("%f %f\n", (double)x, (double)y);
Run Code Online (Sandbox Code Playgroud)

哦......你真的,真的,真的应该包含有问题原型的标题(在未定义行为的惩罚下)

#include <stdio.h>
Run Code Online (Sandbox Code Playgroud)