看,我了解到要运行的基本类型被提升为int,并且float被提升为double,但是等待,如果我将char传递给类似的函数:
char character;
my_func (character)
void my_func (char buffer)
每次我引用缓冲区都是一个int ???如果是,请等一下,我写的所有代码将引用缓冲区作为char?它是从int转换为char吗? 指针,数组和结构枚举联合会怎么样? 我非常害怕,因为我猜使用其他类型而不是int是一个错误,因为我所做的一切都将转换为int。正确?
非常感谢。
答案 0 :(得分:0)
只有在使用没有原型的旧式代码(如果编译器支持)或使用...
varargs函数时,函数调用中基本类型的提升才有意义。在你的情况下,你有一个原型,它匹配,所以没有转换或促销。
在任何情况下,促销仅适用于数字类型 - 它不适用于指针,数组,结构或联合。