2013-11-23 111 views
0

所以我和我的朋友正在尝试制作一个基于文本的视频游戏,并且我一直在研究如何让编程失败。下面是我们的C++程序迄今:如果和if-else语句不能与C++一起工作

#include <iostream> 
#include <stdio.h> 

char Choice; 

using namespace std; 

int main() 
{ 
    printf("You wake up to darkness.\n"); 
    printf("Confused and tired, you walk to the nearest house.\n"); 
    printf("You notice it's abandoned. What do you do?\n"); 
    printf("1. Walk Away.\n"); 
    printf("2. Jump.\n"); 
    printf("3. Open Door.\n"); 
    printf("Choose wisely.\n"); 
    cin >> Choice; 

    if(Choice=1) 
    { 
     printf("The House seems to have a gravital pull on you. How strange.\n"); 
    } 

    else if(Choice=2) 
    { 
     printf("Having Fun?\n"); 
    } 

    return 0; 
} 

但是当我构建并运行它会显示一切,但所有的答案将是,如果(选择= 1)的答案。我的程序中是否存在某些需要或部分相互矛盾的内容?

+1

字符: '1' 不等于1 –

+0

样式注意:您可能不想混'和'cin' /'cout' printf'。它主要是工作,但他们可以用奇怪的方式进行交互,很大程度上是因为它们不相互协调。这不是你目前的问题。相反,如果你正在学习C++,最好是右脚下车。祝你好运,快乐的编程! –

回答

7

您想要比较运算符==,而不是赋值运算符=。这些是不同的运营商。使用=将更改Choice的值,这不是您想要的值。 (你的编译器应该提醒你注意在if语句中使用的=。)

1是整数1.要检查对字符'1'(ASCII值49),这是不同的。使用'1'而不是1

if (Choice == '1') 
{ 
    printf("The House seems to have a gravital pull on you. How strange.\n"); 
} 
else if (Choice == '2') 
{ 
    printf("Having Fun?\n"); 
} 

此外,您正在混合两种类型的I/O。使用cin进行输入是很好的。您应该使用其对应的cout作为输出,而不是printf

cout << "You wake up to darkness." << endl; 
cout << "Confused and tired, you walk to the nearest house." << endl;