我必须编写这个程序,根据输入的字符吐出信息。我有一个字符串下来拍,似乎我的程序在大多数情况下工作,但由于某种原因,无论我输入什么字符,它只执行第一行,并给我电视信息。我无法弄清楚为什么它忽略了if语句,只是输出,TV和FREE,无论给出什么字符。源代码在这里:
#include <iostream>
#include <string>
using namespace std ;
int main()
{
string title ;
int rdate ;
char code ;
cout << "Enter title: " ;
cin >> title ;
cout << "Enter viewing code (T, N, or M): " ;
cin >> code ;
if (code == 't', 'T')
{
cout << title << endl << "Type: TV" << endl << "Price: FREE" << endl ;
}
else if (code == 'n', 'N')
{
cout << title << endl << "Type: New Release" << endl << "Price: $6.99" << endl ;
}
else if (code == 'm', 'M')
{
cout << "Enter year of release: " ;
cin >> rdate ;
if (rdate <= 1959)
{
cout << title << "(" << rdate << ")" << endl << "Type: Movie" << endl << "Price: $2.99" << endl ;
}
}
else cout << "Invalid Input." << endl ;
return 0 ;
}
我尝试执行时获得的一个示例:
Enter title: TESTTITLE
Enter viewing code (T, N, or M): P
TESTTITLE
Type: TV
Price: FREE
这已经解决了,谢谢你们!我没有意识到在做('t','T')时我把它设置为变量和常量。这不是我在这个阶段已经深入学到的东西,所以我甚至没有想到这会造成问题。
答案 0 :(得分:2)
你的if子句错了,而不是:
if (code == 't', 'T')
你必须使用:
if ((code == 't') || (code == 'T'))
我的2美分。 STE
答案 1 :(得分:0)
if (code == 't', 'T')
这条线不符合你的想法。如果您打算测试&#34; code
等于't'
或'T'
&#34;,编写它的方法是使用逻辑OR运算符,||
:
if(code == 't' || code == 'T')
else if (code == 'n' || code == 'N')
//etc...
使用Comma Operator会导致布尔表达式code == 't'
被立即丢弃并替换为值'T'
,因为它是一个非零值,会导致if语句总是评价为真。