从1函数返回并输出2个整数
Returning and outputting 2 integers from 1 function
我必须写一个代码,它有一个函数,它接受两个整数,并将x作为(a+b)返回,将y作为(a*b)返回。当我运行它时,它只输出y。为什么它不输出(或返回)x?
#include <iostream>
using namespace std;
int math (int a, int b) {
int x, y;
x = a + b;
y = a * b;
return x, y;
}
int main() {
cout << math (5,3);
getchar();
getchar();
return 0;
}
math
的返回类型是int
,所以这就是它返回的值(单个整数)。
表达式x, y
使用逗号运算符。逗号运算符计算x
,丢弃其值,然后计算并返回y
。换句话说,return x, y
等同于return y
。
您可以使用std::pair<int,int>
来返回一对整数。
行
return x, y;
没有达到你的期望。逗号运算符只返回最后一个逗号之后的值——在本例中为y
。要返回多个值,应该使用struct
或同时包含这两个值的类。
您只能返回一件事。你可以把它们放在一个结构中,然后返回它。更简单的例子。
struct xy {
int x;
int y;
};
xy math(int a, int b) {
xy pair;
int x, y;
pair.x = a + b;
pair.y = a * b;
return pair;
}
有两种方法可以使函数返回多个值。这个首先是使用参数,无论是引用还是指针:
void
math( int a, int b, int& sum, int& product )
{
sum = a + b;
product = a * b;
}
int
main()
{
int s;
int p;
math(5, 3, s, p);
std::cout << s << ' ' << p << std::endl;
return 0;
}
另一种是定义一个包含两个值的类:
struct MathResults
{
int sum;
int product;
};
MathResults
math( int a, int b )
{
return MathResults{ a + b, a * b };
}
std::ostream&
operator<<( std::ostream& dest, MathResults const& value )
{
dest << value.sum << ' ' << value.product;
}
int
main()
{
std::cout << math( 5, 3 ) << std::endl;
return 0;
}
在大多数情况下,第二种解决方案是优选的。
相关文章:
- 有没有办法简单地从 GPU 调用多个 cpp 输出文件?
- C++多个输入和输出
- 如何在 main 函数中输出两个新字符串C++?
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- 当对字符变量使用toupper()时,所述char变量输出多个字符.我该如何防止这种情况发生
- 如何让变量随机输出四个单词之一
- CPP - strlen 不会输出多个单词的整个长度 [仅限 C 字符串]
- 长度为 20 的 Cout'ing 数组输出 23 个字符
- 如何在C 中输出两个字符串版本,一个具有逃生字符,另一个则不是
- C++ 字符输入仅输出第一个字母
- C++:如何一次输出两个字母的字符串
- C++ - 使用 IO 重定向输入和输出多个整数
- 如何随机输出两个字符串中的一个
- 按升序输出两个时间值
- 如何高效输出两个交替字符或无需循环
- 从1函数返回并输出2个整数
- 使std::cout在同一行中一个接一个地输出多个字符串
- 输出8192个字符后停止输出
- 在c++中对齐(格式化)输出//多个变量在一行中
- 如何在c++中使用pthread或诅咒同时向屏幕输出多个字符串