gpt4 book ai didi

c - 代码中有多少种类型转换?

转载 作者:行者123 更新时间:2023-12-02 08:19:47 26 4
gpt4 key购买 nike

下面代码中有多少种类型转换:

#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

转换(促销)分为三种类型对吗?

最佳答案

我总共看到了 4 种类型的转换(没有一种是“促销”)。

内部f() , x 的值从 int 显式转换而来至 float通过转换运算符,该转换的结果是从 float 隐式转换而来的至 int通过 return声明。

内部main() , 常量的值 5Llong int 隐式转换而来至 int当它作为参数传递给 f 时.调用 f 的结果从 int 隐式转换而来至 float通过 x 的初始化.

这是四次转化。 (return 0; 不涉及转换,因为 0 已经是 int 类型,这是 main 的返回类型。)

给定一个相当聪明的编译器,很可能这些转换都不会产生任何重要的生成代码。由于没有使用任何值,因此整个程序可以简化为

int main(void) { return 0; }

但是所有四种转换都发生在 C 语义定义的“抽象机”中。

(顺便说一下,int main(void) 优于 int main()。)

关于c - 代码中有多少种类型转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38313943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com