Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
假设我在 C 中有一个函数定义为:
bool check ( int x, int y);
现在,如果我使用它调用它check(4);
check(4);
那将是什么价值y?
y
只有在函数未声明(C89/90)或声明时没有原型(C89/90 和 C99)时,这样的代码才可能编译。
在任何情况下,行为都是未定义的。如果调用中使用的提升参数的数量和/或类型与函数定义中使用的不匹配,则行为未定义。
6.5.2.2 函数调用 6 [...] 如果参数的数量不等于参数的数量,则行为未定义 [...] 如果函数是使用不包含原型的类型定义的,并且后面的参数类型提升与提升后的参数不兼容,行为未定义
6.5.2.2 函数调用
6 [...] 如果参数的数量不等于参数的数量,则行为未定义 [...] 如果函数是使用不包含原型的类型定义的,并且后面的参数类型提升与提升后的参数不兼容,行为未定义