【发布时间】:2016-11-13 19:31:57
【问题描述】:
以下代码中有多少种类型转换:
#include<stdio.h>
int f(int x)
{
return (float)x;
}
int main()
{
float x = f(5L);
return 0;
}
在函数f() 中,返回值从int 提升为float。
在main() 中,f() 的参数从int 提升为long,int 再次提升为float。
有三种类型转换(促销)是否正确?
【问题讨论】:
-
由于未使用
x,优化编译可能会丢弃float x = f(5L);,并完成零转换。除此之外,我看到了 4 种以上的类型变化。 -
所有转化都不是“促销”。
-
将
int转换为float以从int函数返回值是什么? -
看起来像:long -> int -> float -> int -> float。这可以编译吗?
-
这是作业题吗?
标签: c type-conversion type-promotion