C中参数的默认值

use*_*619 2 c arguments function

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

bool check ( int x, int y);
Run Code Online (Sandbox Code Playgroud)

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

这将是什么价值y

AnT*_*AnT 7

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

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

6.5.2.2函数调用

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

  • 仍允许编译器拒绝该程序; 这是未定义行为的一个可能后果. (2认同)