c++ - IN、OUT、INOUT 参数
问题描述
请解释程序的执行,以说明为什么它会产生这样的特定输出。
输出是
6 10 20
6 10 8
2 2 14
我的猜测必须是由于 IN、OUT、INOUT 参数,但我并不真正理解它
#include <iostream>
using namespace std;
void sunny(int&, int);
void cloudy(int, int&);
int temp;
int main()
{
int num1 = 6;
int num2 = 10;
temp = 20;
cout << num1 << " " << num2 << " " << temp << endl;
sunny(num1, num2);
cout << num1 << " " << num2 << " " << temp << endl;
cloudy(num1, num2);
cout << num1 << " " << num2 << " " << temp << endl;
}
void sunny(int& a, int b)
{
int w;
temp = (a + b) / 2;
w = a / temp;
b = a + w;
a = temp - b;
}
void cloudy(int u, int& v)
{
temp = 2 * u + v;
v = u;
u = v - temp;
}
解决方案
实际上输出是:
6 10 20
2 10 8
2 2 14
我们可以看到这样的步骤:
阳光电话:
temp = (6 + 10)/2 = 8
w = 6/8 = 0 //This is because w is declared int, and int(6/8) = 0
b = 6 + 0 = 10
a = 8 - 6 = 2
因此 num1 现在是 2,因为引用参数,而 temp 更改为 8,因为它的全局
多云通话:
temp = 2 * 2 + 10 = 14
v = 2
u = 2 - 14 = -12 //This variable is doing nothing
因此 num2 现在是 2 出于与以前相同的原因,而 temp 是 14
推荐阅读
- scala - 实木复合地板到 csv 转换后日期发生变化
- canvas - 画布绘制对角 CSS 渐变
- dataframe - KeyError:“[索引(['MW','LogP','NumAromatic','HBD','HBA'],dtype ='object')]中没有[列]”
- xml - 更新 xml 文件的每个部分中的条目
- asp.net-core - 如何将新的 userId roleId 添加到 AspNetUserRoles 表并从 AspNetUserRoles 表中删除一行?
- typescript - 如何将打字稿添加到现有的 vue3 项目?
- c# - C#:通过异构字典公开类型安全 API
- firebase - 关于firebase监听器和定价的问题
- mysql - mysqladmin:[错误] mysqladmin:指定了“端口”的空值
- c++ - C ++屏蔽字符串的所有字符,除了最后n个字符