C中的隐式转换?

Dan*_*Dan 3 c implicit-conversion

这里发生了什么:

printf("result = %d\n", 1);
printf("result = %f\n", 1);
Run Code Online (Sandbox Code Playgroud)

输出:

result = 1
result = 0.000000
Run Code Online (Sandbox Code Playgroud)

如果我在尝试打印它们之前确保这些变量的类型,它当然可以正常工作.为什么第二个print语句没有被隐式转换为1.00000?

Pau*_*l R 8

在第二种情况下,您的格式字符串和参数类型不匹配 - 因此结果是未定义的行为(u)r.

  • +"行为"中的额外字母+1.我们英国人使用它作为备份,以防"O"发生任何令人讨厌的事情. (9认同)