如何在函数调用中强制转换类型?

大卫542

假设我有以下类似内容可以在C中调用函数:

void test1(void) {
    int a=7;
    function((short) a);
}

编译器是否(几乎)像对待创建临时变量并将其传递给函数一样对待它,例如:

void test1(void) {
    int a=7;
    short tmp_a=(short) a;
    function(tmp_a);
}

还是至少在概念上,演员表与上述内容有什么不同?

埃里克·波斯蒂奇(Eric Postpischil)

强制转换只是运算符,例如乘法或移位。当函数参数是一个表达式时,它的计算方式与其他任何表达式一样。因此function((short) a);等于:

short tmp_a = (short) a;
function(tmp_a);

在以同样的方式function(a*a);等同于:

int tmp_a = a*a;
function(tmp_a);

请注意,函数调用中还涉及隐式转换。如果函数具有原型,则将参数转换为参数的声明类型。如果没有原型,或者参数对应于...原型一部分,则会执行一些默认的参数提升。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果函数参数是同一类型,为什么在Java中强制转换函数调用的两个参数是多余的?

如何在函数调用中强制执行序列

如何在Java中强制转换通用列表类型?

如何在Go中强制转换为类型别名?

如何在C ++ 17中将强制转换函数指针静态转换为noexcept?

如何在Scala中强制转换变量?

如何在.tsx文件中强制转换?

如何在Swift中向下转换/强制转换结构的泛型类型

如何防止构造函数在C ++中强制转换参数类型?

如何在打字稿中的类方法上强制执行函数类型接口?

在函数参数中强制转换数据类型?

在C中强制转换函数指针的返回类型

Python中的函数调用和类型转换?

如何在导入的React组件上强制转换类型?

如何在打字稿中强制转换此函数类型

如何在Typescript函数类型中强制使用强制性参数?

在C#中强制转换泛型函数类型参数

如何在Kotlin中的isAssignableFrom检查之后强制转换泛型类型?

如何在函数参数中强制执行类型并避免隐式转换?

在调用super之前在构造函数中强制转换变量?

如何在Java中通过反射强制转换通用基本类型?

ASM如何通知我有关强制类型转换和构造函数调用的类型注释

如何在一行代码中强制转换对象并调用函数?

构造函数调用中的歧义类型转换

如何在子类型上调用函数?

没有类型转换的 Java 编译器如何在子类中调用正确的 equals() 函数?

如何在目标 c 中强制强制转换和转换数据类型

如何在ajax调用中调用函数

在clickhouse中,如何在使用强制转换函数时为可空列返回空值