假设我在C中有一个函数定义为:
bool check ( int x, int y);
现在,如果我使用check(4);
y
的价值是什么?
答案 0 :(得分:7)
这样的代码只有在函数未声明(C89 / 90)或声明没有原型(C89 / 90和C99)的情况下才可能编译。
在任何情况下,行为都将是未定义的。如果调用中使用的提升参数的数量和/或类型与函数定义中使用的参数不匹配,则行为未定义。
6.5.2.2函数调用
6 [...]如果参数的数量不等于参数的数量,则 行为未定义[...]如果函数是使用不包含原型的类型定义的,则 促销后的参数类型与参数的类型不兼容 促销后,行为未定义