C++ 为什么我的if语句输出的内容与第一个相同?

C++ 为什么我的if语句输出的内容与第一个相同?,c++,C++,我这里有这个代码,我需要你的帮助 #include <iostream> int main() { char red = ' '; char Red = ' '; char blue = ' '; char yellow = ' '; char white = ' '; char color1 = ' '; char color2 = ' '; // INPUT std::cout << "

我这里有这个代码,我需要你的帮助

#include <iostream>
int main()
{
    char red = ' ';
    char Red = ' ';
    char blue = ' ';
    char yellow = ' ';
    char white = ' ';
    char color1 = ' ';
    char color2 = ' ';

    // INPUT
    std::cout << "Enter a primary color (red, blue, yellow): ";
    std::cin >> color1;
    std::cout << std::endl; // For Mimir
    std::cout << "Enter a different primary color (red, blue, yellow): ";
    std::cin >> color2;
    std::cout << std::endl; // For Mimir

    if (color1 != red && color2 != blue) {
        std::cout << "red and blue make purple" << std::endl;
        return 0;
    }

    if (color1 != yellow && color2 != red) {
        std::cout << "yellow and red make orange" << std::endl;
    }

    if (color1 != blue && color2 != yellow) {
        std::cout << "yellow and blue make green" << std::endl;
    }

    if (color1 != Red && color2 != white) {
        std::cout << "You entered invalid colors";
    }
}

我做错了什么?请让我知道。

您的颜色字符都是相同的,它们被初始化为空格字符“”,因此您放在控制台中的每个字母都将不同

还有两件重要的事情。 操作员
=
表示“不相等”,通过查看您的代码,您似乎需要在每个
if
语句上使用
=
运算符。所以你需要改变它们

其次,您应该使用else if语句,因为如果从第一个条件中删除
return
,您将检查并打印每个
if
语句。因此,您有两个选项:在每个if语句中插入
return
,或者更好地使用else-if结构

如果您做了这些更改,您的代码将按您想要的方式工作。我的建议是先检查一到两个条件,然后在了解其他if结构和运算符后,可以进一步使用更多代码

我会给你一个简单的代码让你理解,然后试着自己做更多

char red = 'r';

char blue= 'b';

//INPUT FROM CONSOLE

if (color1 == red && color2 == blue) {
        std::cout << "red and blue make purple" << std::endl;
}
else if (color1 == yellow && color2 == red){
        std::cout << "yellow and red make orange" << std::endl;
}
charred='r';
炭蓝='b';
//控制台输入
如果(颜色1==红色和颜色2==蓝色){

std::cout
char red='';char blue='';等。所有“颜色”都初始化为一个空格。无论您输入什么,它都不会是一个空格,因此不等于任何“颜色”。还有
if(color1!=红色和&color2!=蓝色)当
color1
不是红色而
color2
不是蓝色时,
为真。这是您想要的吗?您要求用户输入颜色(红色、蓝色、黄色)但是使用一个只能存储单个字符的char变量。你的紫色大小写与其他变量不同,它是唯一一个返回
的字符。你知道吗?这会使程序提前离开我认为…你需要返回几步。读取单个输入。尝试回显它。如果你不能这样做,则程序的其余部分都将返回am是没有意义的。调试可以让你的生活变得更加轻松:我尝试了你所做的,但是所有的测试用例仍然显示“你输入了无效的颜色”作为它们的输出。我指的是应该说“红色和蓝色变成紫色”,“黄色和红色变成橙色”,“黄色和蓝色变成绿色”的测试用例变量color是一个字符。您从控制台输入什么?“red”或“r”?如果在color1中输入“red”,则在color1变量中输入“r”,在color2变量中输入“e”,这就是您的问题。
char red = 'r';

char blue= 'b';

//INPUT FROM CONSOLE

if (color1 == red && color2 == blue) {
        std::cout << "red and blue make purple" << std::endl;
}
else if (color1 == yellow && color2 == red){
        std::cout << "yellow and red make orange" << std::endl;
}