C++ 我的if语句到底出了什么问题?

C++ 我的if语句到底出了什么问题?,c++,C++,我尝试了不同的方法来布置if语句,甚至尝试了嵌套if语句。我得到了同样的结果。除了显示我的代码外,我不确定还有什么方法可以问我的问题 #include <iostream> #include <conio.h> #include <string> using namespace std; int main() { char playerOne, playerTwo; cout<<"ROCK PAPER SCISSORS!"<<en

我尝试了不同的方法来布置if语句,甚至尝试了嵌套if语句。我得到了同样的结果。除了显示我的代码外,我不确定还有什么方法可以问我的问题

#include <iostream>
#include <conio.h>
#include <string>

using namespace std;

int main()
{
char playerOne, playerTwo;

cout<<"ROCK PAPER SCISSORS!"<<endl;
cout<<"Enter P for Paper"<<endl;
cout<<"Enter R for Rock"<<endl;
cout<<"Enter S for Scissors"<<endl;

cout<<"Player One enter your choice: ";
cin>>playerOne;

cout<<"Player Two enter your choice: ";
cin>>playerTwo;

if ((playerOne = 'R') && (playerTwo = 'R'))
    cout<<"Both players played same hand";
else if ((playerOne = 'R') && (playerTwo = 'P'))
    cout<<"Player Two wins!";
else if ((playerOne = 'R') && (playerTwo = 'S'))
    cout<<"Player One wins!";
else if ((playerOne = 'P') && (playerTwo = 'R'))
    cout<<"Player One wins!";
else if ((playerOne = 'P') && (playerTwo = 'P'))
    cout<<"Both players played same hand";
else if ((playerOne = 'P') && (playerTwo = 'S'))
    cout<<"Player Two wins!";
else if ((playerOne = 'S') && (playerTwo = 'R'))
    cout<<"Player Two wins!";
else if ((playerOne = 'S') && (playerTwo = 'P'))
    cout<<"Player One wins!";
else if ((playerOne = 'S') && (playerTwo = 'S'))
    cout<<"Both players played same hand";
else
    cout<<"Invalid inputs!";

getche();
return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
char playerOne,playerTwo;

您是否需要双精度的
=
符号而不是
=


=
可以理解为“等于”

您必须使用
=
而不是
=
。运算符
=
测试是否相等,运算符
=
是赋值运算符


通过使用
=
您正在赋值,而不是测试是否相等。因此,除非赋值是(或实际上是)0,否则赋值成功时,条件总是计算为true。(由于pickypg)

如上所述,您需要
=

但是,这里有一些实践可以帮助您

首先,始终将常量和函数返回值放在第一位。
if('R'=playerOne…
将无法编译并告诉您在哪里可以找到它

第二,考虑在输入上执行<代码> ToWORE()/<代码>(并将您的常量下壳)允许<代码> > R '/COD>和<代码> R' < /代码>,而不必对两者进行测试。

第三,可以使用
if(playerne==playerTwo)删除几个if语句
。不幸的是,这需要首先对输入进行有效性检查,以避免两个玩家输入相同的无效字符。但是,如果键入错误,您可能希望进行此检查,例如键入“ERRR”的第一个字符会使“ER”无效,然后运行“RR”


第四,您可以使用硬编码数组或
std::map
等对数据进行编码,并在不使用所有if语句的情况下使用它。

正如其他人所指出的,您可能希望使用
=

=
用于检查是否相等,其中
=
是一个赋值运算符,类似于
int num=1;


在您的情况下,
==
是您需要的运算符。

您可以先告诉它们出了什么问题,这样我们就可以帮助您了解如何修复它。编译器应该已经用这些代码生成了一些警告,您是否注意过它们?您应该澄清一下:
variable=“blah”“//CODE”返回true,这取决于左边设置的是什么(至少在PHP和JavaScript中),而不仅仅是因为它将是成功的,这不是真的。如果值是(或有效的)<代码> 0 < /COD>,它将评估为<代码> false >代码>。在C和C++ <代码>变量=“BLAH”< /代码>评估为<代码>“BLAH”。
如果用作表达式(这是一个非空的
字符*
,因此在
如果
中,它将始终为真)。通常,赋值用作表达式时,计算结果在右侧。值始终为真,除非它是
0
null
false