C++ 函数调用中参数的顺序重要吗?

C++ 函数调用中参数的顺序重要吗?,c++,c,function,arguments,C++,C,Function,Arguments,如果在函数中,参数按特定顺序列出 int foo( size_t bar, int baz ) { /* Some very important code here */ return zap; } 如果我这样称呼它有关系吗 size_t size = 16; int op = 19; foo( size, op ); 或 是的,这很重要。参数必须按照函数期望的顺序给出 C按值传递参数。除了按位置,它无法将值与参数相关联 传递给函数的参数中使用的名称是不相关的。C不会检

如果在函数中,参数按特定顺序列出

int foo( size_t bar, int baz )
{
  /* 
    Some very important  code here
  */
 return zap;
}
如果我这样称呼它有关系吗

size_t size = 16;
int op = 19;
foo( size, op );


是的,这很重要。参数必须按照函数期望的顺序给出

C按值传递参数。除了按位置,它无法将值与参数相关联


传递给函数的参数中使用的名称是不相关的。C不会检查参数名称以确定它们应该与哪些参数关联。通常,参数可能是表达式,而不仅仅是名称,像57或4+8这样的参数并不表示应该是哪个参数。

除了用户之外,还有什么特殊原因吗?@Jordan您希望编译器如何决定将参数映射到参数的顺序?请注意,op和size都可以转换为size_t和int。因此这两个顺序都是可能的。如果这两个参数的类型相同,并且对称处理,例如int addint x,int y{return x+y;},则顺序无关紧要。但这是一种罕见的情况,您也可以有多个相同类型的参数。如果你打折他们的订单,就不可能区分他们。我记得在ANSI C之前的好日子。你真的可以享受参数排序的乐趣。想想那些时候,它们真的不是那么好,这取决于,对于交换函数constexpr int addint a,int b{返回a+b;}static_assertad42,58==add58,42;这是相同的,但对于非交换的constexpr int sumint a,int b{return a-b;}static_assertsum42,58==sum58,42;。这是不一样的
foo( op, size);