在函数参数中隐式转换,这个内部会发生什么?

时间:2011-02-16 00:43:16

标签: c casting

看,我了解到要运行的基本类型被提升为int,并且float被提升为double,但是等待,如果我将char传递给类似的函数:

char character; my_func (character)

void my_func (char buffer)

每次我引用缓冲区都是一个int ???如果是,请等一下,我写的所有代码将引用缓冲区作为char?它是从int转换为char吗? 指针,数组和结构枚举联合会怎么样? 我非常害怕,因为我猜使用其他类型而不是int是一个错误,因为我所做的一切都将转换为int。正确?

非常感谢。

1 个答案:

答案 0 :(得分:0)

只有在使用没有原型的旧式代码(如果编译器支持)或使用... varargs函数时,函数调用中基本类型的提升才有意义。在你的情况下,你有一个原型,它匹配,所以没有转换或促销。

在任何情况下,促销仅适用于数字类型 - 它不适用于指针,数组,结构或联合。