gpt4 book ai didi

C++ 在 if 语句中使用 rand

转载 作者:搜寻专家 更新时间:2023-10-31 00:16:03 24 4
gpt4 key购买 nike

我一天前真正开始使用 C++,但在尝试创建剪刀石头布游戏时遇到了问题。这段代码并不完全是完成后的样子,但我这样做是为了演示我的问题。

我制作了 brps,意思是:机器人石头剪刀布,一个从 1 到 3 的随机数,其中相应的数字将导致一个 cout,说明机器人选择了什么项目。

代码的随机部分是通过查看不同的论坛和对先前问题的回答而编写的,但我似乎无法解决这个问题。每当我运行该程序时,无论我做什么,它都会显示“Bot 选择了石头”。但是,如果我删除 if 状态,并简单地打印 brps 它每次都会显示一个随机数。所以我需要帮助来弄清楚为什么程序每次都选择岩石,而该选择应该由 rand 选择的数字来定义。

请随意对代码的其他部分发表评论,因为我希望所有这些都写得有些糟糕 :L

编辑:urps 是用户输入答案的地方。我没有在这个例子中使用它。

#include <iostream>
#include <stdlib.h>
#include <time.h>

using namespace std;

int main()
{
cout<<"Hi! Welcome to ROCK PAPER SCISSORS!\n";
cout<<"To play, press enter.\n";
cin.get();
system("cls");

int game();
{
srand(time(NULL));
int brps = rand()>>4, urps;
brps = brps % 3 + 1;


cout<<"Bot chose ";
if (brps = 1){
cout<<"the rock.\n";}

else if (brps = 2){
cout<<"the paper.\n"; }

else if (brps = 3){
cout<<"the scissors.\n"; }

else{
cout<<"invalid.\n.";}

cin.get();
}

}

最佳答案

你应该使用==来比较,而不是=

如果写成brps = 1,就是将值1赋值给变量brps,赋值表达式的值为与分配的值相同,即 1。这是非零的,并被转换为 true,因此您总是得到“岩石”。

另请注意,如果您的意图是创建一个名为 game 的函数,那么您的代码不会这样做。额外的分号使其成为一个声明,表示在别处有一个名为 game 的函数,然后 { } block 就是一个 { } block ,不是函数体。

而且,正如克里斯在他的评论中所说,一定要打开编译器警告。不同的编译器给出不同的警告,但是 g++ 给出警告 suggest parentheses around assignment used as truth value 对于你使用 = 而不是 ==。编译器警告是编译器试图帮助您,而编程已经足够困难,您不应该拒绝任何帮助。

关于C++ 在 if 语句中使用 rand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17563314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com