C++ 应用运算符的更好方法”;及&&引用&引用;或“或”;C++;

C++ 应用运算符的更好方法”;及&&引用&引用;或“或”;C++;,c++,operators,C++,Operators,问:有没有比我现在使用的更有效的方法来使用运算符或“| |”呢 我正在创建一个HangMan游戏,玩家在游戏中键入一个字母,唯一的方法是输入正确的单词,在这个例子中,if语句是唯一的出路 我的编译器遇到了一个问题,可能是我需要开发一个更好、更干净的代码版本,但这是我目前所拥有的 // w is the word chosen if(w1=='d' && w2=='u' && w3=='c' && w4=='k' || answer == erro

问:有没有比我现在使用的更有效的方法来使用运算符或“| |”呢

我正在创建一个HangMan游戏,玩家在游戏中键入一个字母,唯一的方法是输入正确的单词,在这个例子中,if语句是唯一的出路

我的编译器遇到了一个问题,可能是我需要开发一个更好、更干净的代码版本,但这是我目前所拥有的

// w is the word chosen
if(w1=='d' && w2=='u' && w3=='c' && w4=='k' || answer ==  error)
 {


  if(w1=='d' && w2=='u' && w3=='c' && w4=='k')
     {
     cout << "The word is correct \n";
     }
     else if (answer == error)
     {
     cout << " You got 5 strike you lost \n";
     }
 }

您不需要第一个if语句。第二个if-else在有或没有它的情况下都能完成同样的任务。这将删除编译器建议

if (w1 == 'd' && w2 == 'u' && w3 == 'c' && w4 == 'k') {
    cout << "The word is correct \n";
}
else if (answer == error) {
    cout << " You got 5 strike you lost \n";
}
if(w1='d'&&w2='u'&&w3='c'&&w4='k'){

cout您不需要第一个if语句。第二个if-else将完成相同的任务,无论有没有它。这应该会删除编译器的建议

if (w1 == 'd' && w2 == 'u' && w3 == 'c' && w4 == 'k') {
    cout << "The word is correct \n";
}
else if (answer == error) {
    cout << " You got 5 strike you lost \n";
}
if(w1='d'&&w2='u'&&w3='c'&&w4='k'){

cout您不需要第一个if语句。第二个if-else将完成相同的任务,无论有没有它。这应该会删除编译器的建议

if (w1 == 'd' && w2 == 'u' && w3 == 'c' && w4 == 'k') {
    cout << "The word is correct \n";
}
else if (answer == error) {
    cout << " You got 5 strike you lost \n";
}
if(w1='d'&&w2='u'&&w3='c'&&w4='k'){

cout您不需要第一个if语句。第二个if-else将完成相同的任务,无论有没有它。这应该会删除编译器的建议

if (w1 == 'd' && w2 == 'u' && w3 == 'c' && w4 == 'k') {
    cout << "The word is correct \n";
}
else if (answer == error) {
    cout << " You got 5 strike you lost \n";
}
if(w1='d'&&w2='u'&&w3='c'&&w4='k'){


为什么不将目标单词存储在std::string中,并将输入单词与之进行比较呢?如果有疑问,请添加更多的括号:
(w1=='d'&&w2='u'&&w3='c'&&w4='k')| response==error
,您在命令行上没有得到警告的原因可能是您没有启用警告(
-Wall
)在命令行上。在这两种情况下,您都使用
g++
作为编译器。为什么不将目标字存储在std::string中,并将输入字与之进行比较?如果有疑问,请添加更多括号:
(w1='d'&w2='u'&w3='c'&w4='k')| | answer==error
您没有在命令行上获得警告的原因可能是您没有启用警告(
-Wall
)在命令行上。在这两种情况下,您都使用
g++
作为编译器。为什么不将目标字存储在std::string中,并将输入字与之进行比较?如果有疑问,请添加更多括号:
(w1='d'&w2='u'&w3='c'&w4='k')| | answer==error
您没有在命令行上获得警告的原因可能是您没有启用警告(
-Wall
)在命令行上。在这两种情况下,您都使用
g++
作为编译器。为什么不将目标字存储在std::string中,并将输入字与之进行比较?如果有疑问,请添加更多括号:
(w1='d'&w2='u'&w3='c'&w4='k')| | answer==error
您没有在命令行上获得警告的原因可能是您没有启用警告(
-Wall
)在命令行上。您在这两种情况下都使用
g++
作为编译器。这不是编译器的真正错误,更像是一个建议,但我认为您刚才提供给我的选项有一段时间一直困扰着我,只是我担心它不会像以前的方法那样捕获任何错误,但现在我想到了,它听起来不错更安全。@Cris我找到了答案。很高兴你找到了答案!”在评论中,有人建议添加括号。我认为这不会有什么不同区别在于它会删除警告。警告的全部要点是,为了可读性,应该添加括号。当然,正如您所说,在这种情况下,删除毫无意义的
if
是删除警告的更好方法。这不是编译器的真正错误,更像是一个建议,但我不是我想你刚才给我的那个选项在我脑子里出现了一段时间,只是我担心它不会像以前的方法那样出现任何错误,但现在我想到了,它听起来更安全了。@Cris我修正了答案。很高兴你找到了它!“在评论中,有人建议添加括号。我认为这不会有什么不同"区别在于它会删除警告。警告的全部要点是,为了可读性,应该添加括号。当然,正如您所说,在这种情况下,删除毫无意义的
if
是删除警告的更好方法。这不是编译器的真正错误,更像是一个建议,但我不是我想你刚才给我的那个选项在我脑子里出现了一段时间,只是我担心它不会像以前的方法那样出现任何错误,但现在我想到了,它听起来更安全了。@Cris我修正了答案。很高兴你找到了它!“在评论中,有人建议添加括号。我认为这不会有什么不同"区别在于它会删除警告。警告的全部要点是,为了可读性,应该添加括号。当然,正如您所说,在这种情况下,删除毫无意义的
if
是删除警告的更好方法。这不是编译器的真正错误,更像是一个建议,但我不是我想你刚才给我的那个选项在我脑子里出现了一段时间,只是我担心它不会像以前的方法那样出现任何错误,但现在我想到了,它听起来更安全了。@Cris我修正了答案。很高兴你找到了它!“在评论中,有人建议添加括号。我认为这不会有什么不同“这将产生不同,因为它将删除警告。警告的全部要点是,为了可读性,应该添加括号。当然,正如您所说,在这种情况下,删除毫无意义的
if
是删除警告的更好方法。