我似乎遇到了一个问题。在尝试根据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 else”时,它开始打印“A.M.”仅
答案 0 :(得分:1)
此...
ap == "A.M.", "am"
rules of operator precedence下的...等同于......
"am"
...在布尔上下文中经历标准转换为true
(通过非0指针)。
这是因为逗号运算符在其左侧评估子表达式 - 即ap == "A.M."
- 并且当该评估的任何副作用被执行时,子表达式的实际值随后被丢弃并且子表达式右边的表达式 - 即"am"
- 被评估并使用。
您应该使用:
if (ap == "A.M." || ap == "am")
(C ++标准允许关键字“or
”作为||
的替代,但是着名的Microsoft编译器在没有额外命令行参数的情况下不支持它,因此在实践中最好避免使用用于便携式代码。)