C 函数中以逗号分隔的返回参数

标签 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/

相关文章:

c++ - 使用多路复用搜索 C/C++ 网络库

c# - 为什么在任何编程语言中都有声明默认 namespace /库的约定?

c - 将十六进制字符串转换为字节数组的预处理器宏

c++ - 如何在 C++ 'for' 循环中放置两个增量语句?

C 编程 - while 循环中的逗号运算符

c - 请解释此程序中的逗号运算符

c++ - 与 ? 一起使用时的逗号运算符优先级: operator

使用套接字复制目录

c - 链表文本文件循环

c - 逗号运算符和分号之间有什么实际的语义区别吗?