c++ - 函数中的多个返回值

标签 c++ c

我遇到了下一个样本:

#include <stdio.h>

// test multiple return                                                                                                                                                             
int foo()
{
    return 1,2,3,4,5,6;
}

// main entry point                                                                                                                                                                 
int main(int argc, char* argv[])
{
    printf("foo returns: %d\n", foo());
    return 0;
}

编译它,然后运行:

gcc main.cpp -o main
./main

结果让我很困惑:

foo returns: 6

问题是:为什么没有编译时错误?

最佳答案

在这种情况下:

return 1,2,3,4,5,6;

实际上是comma operator .它按顺序(从左到右)评估逗号之间的所有内容,并返回最后一个。

这就是它返回并打印 6 的原因。 是的,它是有效代码。这就是没有编译器错误的原因。 (虽然 1,2,3,4,5 部分在这种情况下没有做任何事情。)

在 C 和 C++ 中,您不能返回多个值。您必须使用结构或类来执行此操作。

关于c++ - 函数中的多个返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9015792/

相关文章:

c - 下面的 LinkedList 代码有什么问题?

c++ - 超出范围的枚举转换能否产生基础类型之外的值?

c++ - 使用 C++ lambda 正确实现 finally block

c++ - 如何为模板类创建 "factory function"?

代码不读取字符串的最后一个字符(C语言)

c - 如何使用 toupper() 函数来计算小写和大写用户输入?

c++ - ld.exe : cannot find -lstrmbase

c++ - 尝试 'Make' CUDA SDK,ld 找不到库,ldconfig 说可以

c++ - lambda 及其捕获的值

在 C 中检查两个无序集合的相等性是否可以实现 o(n) 效率?