операторы if и if-else не работают с c ++

0

поэтому мы с моим другом пытаемся создать текстовую видеоигру, и я занимаюсь некоторыми исследованиями о том, как программировать. Вот наша 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 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;
}

Но когда я строю и запускаю его, будет отображаться все, но все ответы будут ответом if (Choice = 1). Есть ли что-то, отсутствующее в моей программе, которая нужна или части противоречат друг другу?

  • 1
    char: '1' не равно 1
  • 0
    Примечание по стилю: Вы, вероятно, не хотите смешивать printf с cin / cout . В основном это будет работать, но они могут взаимодействовать странным образом, в основном потому, что они не координируют друг друга. Это не проблема, которую вы имеете в настоящее время. Скорее, если вы изучаете C ++, лучше встать на правильную ногу. Удачи и счастливого программирования!
Теги:
if-statement

1 ответ

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");
}

Кроме того, вы смешиваете два типа ввода-вывода. Использование cin для ввода является хорошим. Вы должны использовать свой экземпляр cout для вывода, а не printf.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню