【发布时间】:2021-09-06 12:32:02
【问题描述】:
我目前正在为我的 CS121 课程开发一个掷骰子程序,这是我的代码。我正在尝试编写一个滚动 6 面骰子并在滚动 1 时重新滚动它的函数。我想调用该函数 3 次,然后将函数的输出加在一起。不幸的是,当我尝试添加它并输出它时,roll2 下方有一条红线,当我将鼠标悬停在它上面时,它指出“表达式必须具有整数或无范围枚举类型。我很难过,所以如果你能帮我找到解决方法那太好了。
#include <iostream>
using namespace std;
void diceroll() {
int result = ((rand() % 6) + 1);
if (result != 1)
cout << result << + " ";
else cout << result << +" ";
}
int main() {
auto roll1 = diceroll;
auto roll2 = diceroll;
auto roll3 = diceroll;
cout << "The total of the 3 numbers is" << endl;
cout << roll1 + roll2 + roll3;
}
【问题讨论】:
-
你已经定义了
void diceroll,这意味着编译器认为它没有返回值。该函数也没有返回值 - 它只是将一个值打印到控制台。将其更改为返回int,然后在代码中返回return result;。此外,在diceroll中,您的if声明毫无意义,因为if和else做同样的事情——它们都是cout << result << " ";。 -
+" "语法值得在 Stackoverflow 上提出自己的问题。那是什么?if声明应该完成什么?if和else部分的功能完全相同。 -
当您使用
auto关键字时,您让编译器决定roll1、roll2和roll3的类型。如果您希望它们是整数,请将它们定义为整数(例如int roll1 = diceroll;)。这将更改您的错误,以便更准确地描述错误所在的位置。