我遇到了下一个样本:
#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/