gpt4 book ai didi

c++ - 为什么我的if else语句不起作用并从数组中输出正确的索引?

转载 作者:行者123 更新时间:2023-12-01 15:10:59 24 4
gpt4 key购买 nike

该代码应该从用户输入中输出正确的颜色。用户的输入存储在数组中。但是,else语句未执行/工作。

string eyecolor;
string colorcin[4];

void color() {
cout << "I am going to ask you for 4 colors." << endl;
for (int a = 0; a < 4; a++) {
cout << "Color " << a + 1 << ": ";
cin >> colorcin[a];
}
}

void eyes() {
cout << "What color are your eyes? ";
cin >> eyecolor;
if (eyecolor == "blue" || "Blue" || "green" || "Green" || "hazel" ||
"Hazel") {
cout << "Your favorite color is " << colorcin[0] << endl;
} else {
cout << "Your favorite color is " << colorcin[1] << endl;
}
}

int main() {
color();
eyes();
}

最佳答案

这不是您比较多个值的方式:

if (eyecolor == "blue" || "Blue" || "green" || "Green" || "hazel" ||
"Hazel") {

这实际上是先比较 eyecolor"blue"。如果为假,则在 bool(boolean) 上下文中评估 "Blue"。由于它是一个字符串常量,因此它会衰减为指向其第一个元素的指针,并且由于该指针不能为 NULL,因此其求值为true,因此此表达式将始终为true。

您需要显式比较 eyecolor和每个可能的值:
if (eyecolor == "blue" || eyecolor == "Blue" || eyecolor == "green" || 
eyecolor == "Green" || eyecolor == "hazel" || eyecolor == "Hazel") {

haircolor相同。

关于c++ - 为什么我的if else语句不起作用并从数组中输出正确的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60103323/

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