C中的隐式数字类型转换

ide*_*ixs 3 c gcc casting numbers

考虑这个简单的代码:

int foo = 4;
double d1 = sin (foo);
double d2 = foo * 0.1;
Run Code Online (Sandbox Code Playgroud)

当我用gcc编译它时,结果是预期的(即在数学上正确),即使sin()期望a double作为其参数.看来gcc已经隐含地foo投入了double.

这种隐式转换的可移植性如何,有哪些限制,我在哪里可以找到文档?

旁注:我知道C++编译器需要正确处理这样的转换.

Oli*_*rth 5

C99标准允许这种隐式转换(参见第6.5.2.2节,第7节).