gpt4 book ai didi

c++ - 使用 if-else 语句将字符串与常量进行比较。如果/否则跳过第二个

转载 作者:行者123 更新时间:2023-11-28 06:23:02 26 4
gpt4 key购买 nike

我好像遇到了问题。在尝试根据 A.M./P.M. 获取输入时。条目,我的 if else 语句有某种逻辑错误。我从来没有真正做过这种事情(我对 c++ 有点陌生)所以帮助会很感激。

cout << "What time was the dose administered? (Round to hour): ";
cin >> time;
cout << "A.M./P.M.? ";
cin >> ap;

cout << ap;

if (ap == "A.M.", "am"){
ap = "A.M.";
}
else if (ap == "P.M.", "pm"){
ap = "P.M.";
}
else { cout << "This is not a valid entry.";
}

“ap”是一个字符串。无论输入什么,结果都是“A.M”。

旁注:最初,它只会打印“P.M.”但是这两个语句最初都是“if”,当我将其更改为“if else”时,它开始打印“A.M.”仅。

最佳答案

这...

ap == "A.M.", "am"

...在rules of operator precedence下, 相当于...

"am"

...在 bool 上下文中经过标准转换为 true(通过非 0 指针)。

那是因为逗号运算符会计算其左侧的子表达式 - 即 ap == "A.M." - 虽然该计算的任何副作用都会产生子表达式的实际值 -然后表达式被丢弃,右边的子表达式 - 即 "am" - 被评估并被使用。

你应该改用:

if (ap == "A.M." || ap == "am")

(C++ 标准允许关键字“or”作为 || 的替代,但众所周知,如果没有额外的命令行参数,Microsoft 的编译器将不支持它,因此在实践中最好避免使用可移植代码。)

关于c++ - 使用 if-else 语句将字符串与常量进行比较。如果/否则跳过第二个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29025607/

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