C ++“按任意键继续”问题

时间:2016-03-13 19:49:39

标签: c++

我的问题是关于我写的一个小C ++程序(类似于Zork)。我对编码很新,所以如果我的问题没有任何意义,不要怪我。这就是代码:< / p>

 #include <iostream>
using namespace std;
int main()
{
    cout << "Du befindest dich in einem dunklem Wald,um dich herum ist es dunkel.\n Vor dir liegt eine Fakel.\n Gebe 1 und Enter ein um die Fakel an dich zu nehmen \n oder 2 und Enter um sie in Ruhe zu lassen \n" ;
    int Entscheidung;
    cin>> Entscheidung;
    switch (Entscheidung) {
    case 1:
    cout <<"Du zündest die Fakel an,deine Umgeben ist nun sichtbar \n";
    break;
    case 2:
        cout <<"Du lässt die Fakel liegen,um dich herum bleibt es Dunkel \n";
        break;
        }
        if (Entscheidung==1) {
            cout << "Vor dir steht ein Elf,er scheint friedlich \n Gebe 1 ein um ihn anzusprechen oder 2 um ihn Anzugreifen \n";
        }
        if(Entscheidung==2){
            cout<< "Du hörst Schritte im dunkeln. \n Gebe 1 ein um die Fakel zu nehmen und den Geräuschen auf den Grund zu gehen \n oder 2 um dich von den Geräuschen weg zu bewegen \n";
            }
        int Entscheidung2;
        switch (Entscheidung2) {
        case 1:
        cout <<"Du redest mit dem Elfen.Er versucht dich anzugreifen \n";
        break;
         }
    return 0;
}

我的问题是,如果我运行程序,我只能输入一个变量然后 按任意键继续显示,从那时起,我不能放任何新东西,因为它只是关闭。希望有人可以帮助我。 Thx提前

PS:我使用Code :: Blocks作为IDE和编译器

3 个答案:

答案 0 :(得分:1)

您的逻辑没问题,但您忘记阅读变量Entscheidung2;

问题是您确实声明了变量 Entscheidung2 ,但从未初始化/读取,因此条件

switch (Entscheidung2) {
        case 1:
            cout <<"Du redest mit dem Elfen.Er versucht dich anzugreifen \n";
            break;
     }

从未被执行过......

的QuickFix:

例如,

在声明变量之后添加cin>> Entscheidung2;

一切都会奏效:

答案 1 :(得分:1)

    int Entscheidung2;
    switch (Entscheidung2) {

这是未定义的行为Entscheidung2既未初始化也未设定;你不能试图阅读它的价值,但那是你在switch陈述中所做的。

具有足够高的警告级别,您可以使编译器检测到此类错误。此类警告的示例:

warning: 'Entscheidung2' is used uninitialized in this function

warning C4700: uninitialized local variable 'Entscheidung2' used

显然,目的是在使用之前将值读入Entscheidung2

    int Entscheidung2;
    cin >> Entscheidung2;
    switch (Entscheidung2) {

这将删除未定义的行为并匹配假定的意图。

  

按任意键继续显示

这与您的计划无关。它是来自运行程序的环境的消息。

  

我使用Code :: Blocks作为IDE和编译器

没有。 &#34;代码::块&#34;不是编译器。

请不要使用非英语标识符。对于不会说德语的人,&#34; Entscheidung&#34;读起来就像一个完全随机的一系列字符,并且发布带有无法识别标识符的代码并不友好。

答案 2 :(得分:0)

首先,你甚至不需要if功能。使用案例进行比较就足够了。否则你会将变量与1和2进行两次比较,这没有任何意义。然后你也应该通过 cin 从控制台获得输入,这在下面的答案中已经提到了。

 #include <iostream>
using namespace std;
 int main()
{
    cout << "Du befindest dich in einem dunklem Wald,um dich herum ises dunkel.\n Vor dir liegt eine Fakel.\n Gebe 1 und Enter ein um die Fakel an dich zu nehmen \n oder 2 und Enter um sie in Ruhe zu lassen \n" ;
int Entscheidung;
cin>> Entscheidung;
switch (Entscheidung) {
case 1:
cout <<"Du zündest die Fakel an,deine Umgeben ist nun sichtbar \n";
cout << "Vor dir steht ein Elf,er scheint friedlich \n Gebe 1 ein um ihn anzusprechen oder 2 um ihn Anzugreifen \n";

break;
case 2:
    cout <<"Du lässt die Fakel liegen,um dich herum bleibt es Dunkel \n";
   cout<< "Du hörst Schritte im dunkeln. \n Gebe 1 ein um die Fakel zu nehmen und den Geräuschen auf den Grund zu gehen \n oder 2 um dich von den Geräuschen weg zu bewegen \n";
    break;
    }

    int Entscheidung2;
    cin>>Entscheidung2;
    switch (Entscheidung2) {
    case 1:
    cout <<"Du redest mit dem Elfen.Er versucht dich anzugreifen \n";
    break;
     }
return 0;
 }