2

假设我在 C 中有一个函数定义为:

bool check ( int x, int y);

现在,如果我使用它调用它check(4);

那将是什么价值y

4

1 回答 1

7

只有在函数未声明(C89/90)或声明时没有原型(C89/90 和 C99)时,这样的代码才可能编译。

在任何情况下,行为都是未定义的。如果调用中使用的提升参数的数量和/或类型与函数定义中使用的不匹配,则行为未定义。

6.5.2.2 函数调用

6 [...] 如果参数的数量不等于参数的数量,则行为未定义 [...] 如果函数是使用不包含原型的类型定义的,并且后面的参数类型提升与提升后的参数不兼容,行为未定义

于 2012-07-27T19:55:59.463 回答