как увеличить ссылочную переменную на 1 - PullRequest
7 голосов
/ 01 ноября 2011

Я новичок в c ++ и пытаюсь увеличить количество автомобилей, начиная со значения 50, но только на единицу, если ваш урон больше, чем урон от карт. Я хочу, чтобы автомобили сохраняли свою ценность в следующий раз, когда это произойдет. Я надеюсь, что это имеет смысл.

int Power (int &car);

int main(){
    int car = 50;
    // ...
    // ...
    // ...

    int carDamage = 0;
    int yourDamage = 0;
    // pick a random number between 1 to 50
    yourDamage = 0 + rand() % (50 - 0 + 1);
    carDamage = 0 + rand() % (50 - 0 + 1);
    cout << "You hit the car and cause damage of: " << carDamage << endl;
    cout << "The car hits you and causes damage of: " << yourDamage << endl;
    cout << endl;

    if(carDamage < yourDamage)
    {
        cout << "You win" << endl;
        cout << "You gain strength." << endl;
        cout << endl;
        int car = car + 1;
    }
    else
    {

Ответы [ 6 ]

9 голосов
/ 01 ноября 2011

Вы объявляете новую переменную, затеняя оригинальную.

изменение

int car = car + 1;

до

car = car + 1;
8 голосов
/ 01 ноября 2011

Вам необходимо переназначить переменную same . Вы объявляете новую переменную.

Изменить это:

int car = car + 1;

К этому:

++car;
1 голос
/ 01 ноября 2011

Делая это:

int car = car + 1;

Вы переопределяете автомобиль как целое число.

см

#include <stdio.h>
int car;
int main() {
    car = 0;
    for (int i = 0; i < 10; i++) {
        int car = 0;
        car++;
    }
    printf("%3d", car);
}

против

#include <stdio.h>
int car;
int main() {
    car = 0;
    for (int i = 0; i < 10; i++) {
        car++;
    }
    printf("%3d", car);
}
0 голосов
/ 01 ноября 2011

Я не вижу петли, но я рискну предположить, что ваша проблема в том, что вы делаете эту строку:

int car = car + 1;

в вашем:

if(carDamage < yourDamage)

заявление, которое означает, что вы каждый раз изменяете значение, сбрасывая его значение.

напишите int car; негабаритный оператор и просто сделайте ++car; внутри цикла, где вы изначально написали int car = car + 1;

0 голосов
/ 01 ноября 2011

Ваша проблема в том, что когда вы говорите

int car = car + 1;

Вы в основном создаете локальную переменную с именем car (локальную для оператора if), которой присваивается значение 51 (поскольку исходная локальная переменная области действия (локальная для главной) содержит 50, и вы добавляете 1). Эта локальная переменная (оператор on в операторе if) уничтожается после выхода из оператора if.

Если вы измените это на

car = car + 1;

Теперь вы изменяете переменную local на main, и, таким образом, обновление будет сохранено.

0 голосов
/ 01 ноября 2011

Вы объявляете новую переменную car внутри оператора if, которая скрывает исходную переменную car из вышеуказанной области видимости.Удаление типа позволит вам ссылаться на существующую переменную вместо объявления новой.

Короче говоря, измените

int car = car + 1;

на

car = car + 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...