C++ 我的if语句到底出了什么问题?
我尝试了不同的方法来布置if语句,甚至尝试了嵌套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
#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
。