加法语句后未增加的值
Value not being increased after addition statement?
我有两个函数,将随机数添加到总值中。
问题是,每次我调用函数并打印总数时,它都不会相加。如果它生成2,它会说总数是2。之后,如果我再次调用它,它生成5,它说总数是5,并且不加(如果发生这种情况,应该是7。(
这里一切看起来都很好。。。
int human(int humanscore)
{
int diceRoll= rand() % 7;
cout << "player rolled: ";
humanscore+= diceRoll;
cout << diceRoll;
cout << "human score is: " << humanscore;
}
int computer(int compscore)
{
int diceRoll= rand() % 7;
cout << "computer rolled: ";
compscore+= diceRoll;
cout << diceRoll;
cout << "computer score is: " << compscore;
}
int& score
。
还要注意,rand() % 7
将为您提供一个范围为[0,6]的值。骰子的值在[1,6]范围内,您应该使用1 + rand() % 6
。
*更新:*
这可以用C++引用完成:
int computer(int& compscore)
{
...
compscore += diceRoll;
...
}
int var = 0;
computer( var );
对于此声明,函数将实际变量var
作为参数,对函数中的compscore
所做的更改反映在变量var
中,因为该特定调用的compscore
和var
只是同一变量的别名。
在C中,指针也能达到同样的效果:
int computer(int* compscore)
{
...
*compscore += diceRoll;
...
}
int var = 0;
computer( &var );
该函数的调用为它提供了应该更改的变量的地址。对于一般用途,您可以假设使用引用的第一个实现将由编译器自动生成一个类似于最后一个代码段的解决方案。
这里是cout
和diceRoll
,所以它只会打印当前卷,而不是总数。
假设您正确地打印了骰子,您还需要在这些函数的末尾写入return humanscore;
和return compscore;
,以传递回新结果。
您正在按值传递参数。这意味着当函数完成时,对它们的任何更改都会被丢弃。如果你想保持你的分数,你有几个选择。您可以通过引用传递参数,在C++中,这可以通过传递指向分数的指针来完成。你可以让函数返回新的分数,然后在下次调用函数时将返回的值传递给它。你也可以使用全局变量来获得明显不太理想的解决方案。
相关文章:
- 数组索引的值没有增加
- 为什么我的代码在输出中增加了93天
- 有效地使用std::unordered_map来插入或增加键的值
- C++ 动态数组每次添加时将大小增加 1 - 错误
- 为什么要增加导致崩溃的指针
- 增加传递地址的值
- 如何增加以前由新运算符分配的 C++ std::list 数组的大小?
- 为什么"i"在循环的每次迭代中都没有增加?(C++)
- std::thread 增加 DLL 引用计数,从而防止卸载 DLL
- 如何在C++中为增加但记住删除先前对象的对象分配唯一标识符
- 将一对插入地图并增加计数?
- 整数类型应该显式转换(例如"int"到"无符号")还是只会增加混乱?
- 我的 c++ 应用程序中的运行时间从 0 增加到 60 太快了(例如一毫秒或一微秒)
- 为什么当通过 TCP 发送的消息速率增加时,请求-响应消息对的延迟会降低?
- 琐碎并发代码的吞吐量不会随着线程数量的增加而增加
- C++:功能在输出前自动使用50减/增加输入数
- 追加位以增加字符的大小
- 为什么在C++中增加指针后打印了一个值而不是 NULL/0?
- 内存增加和字符串流?
- 如何增加使用 CUDA 实现的 FLOPS