为什么在C ++中忽略我的If语句?

时间:2017-10-09 20:44:41

标签: c++ if-statement

我必须编写这个程序,根据输入的字符吐出信息。我有一个字符串下来拍,似乎我的程序在大多数情况下工作,但由于某种原因,无论我输入什么字符,它只执行第一行,并给我电视信息。我无法弄清楚为什么它忽略了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')时我把它设置为变量和常量。这不是我在这个阶段已经深入学到的东西,所以我甚至没有想到这会造成问题。

2 个答案:

答案 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语句总是评价为真。