<分区>
在完成 C 编程测试时,我被问到一个关于似乎返回两个值的函数的预期输出的问题。它的结构如下:
int multi_return_args(void)
{
return (44,66);
}
这个问题让我感到惊讶,并且本能地认为如果可能的话,第一个参数将传递给调用者。
但是编译之后,结果却是66。快速搜索后,我找不到任何关于构建这样的返回语句的信息,所以想知道是否有人可以帮助我。
为什么会这样,为什么?
标签 c comma-operator
<分区>
在完成 C 编程测试时,我被问到一个关于似乎返回两个值的函数的预期输出的问题。它的结构如下:
int multi_return_args(void)
{
return (44,66);
}
这个问题让我感到惊讶,并且本能地认为如果可能的话,第一个参数将传递给调用者。
但是编译之后,结果却是66。快速搜索后,我找不到任何关于构建这样的返回语句的信息,所以想知道是否有人可以帮助我。
为什么会这样,为什么?
最佳答案
逗号运算符计算一系列表达式。逗号组的值是列表中最后一个元素的值。
在您展示的示例中,前导常量表达式 44 没有任何效果,但如果该表达式有副作用,它就会发生。例如,
return printf( "we're done" ), 66;
在这种情况下,程序会打印“we're done”然后返回 66。
关于C 函数中以逗号分隔的返回参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32094189/