Переменная, переданная в функцию, дающую неожиданное значение

0

Когда я PrintAccntInfo( x, bank_name) целое число с помощью функции ниже через переменную (т. PrintAccntInfo( x, bank_name) X = 1 PrintAccntInfo( x, bank_name) она всегда считывается функцией 0 независимо от ее фактического значения. Однако, если я PrintAccntInfo(1, bank_name) значение непосредственно, то есть PrintAccntInfo(1, bank_name) функция работает нормально. Может кто-нибудь объяснить мне, что здесь происходит? Спасибо!

void Bank::PrintAccntInfo(int accntnum, Bank bank_name) {
    int num_transactions = 0;
    transaction_node *temp;
    temp = bank_name.accounts[accntnum].head;
    .......

accntnum - проблема.

Редактировать:

Вот код, который я вызываю из функции (resp - строка, считываемая от пользователя):

    if (stoi(resp)) {
                        int resp_int = stoi(resp);

                        if (resp_int = 0) {
                            for (int i=1;i<21;i++)  //print all the account transactions                    
                                PrintAccntInfo(i,our_bank);
                            badinputchk = false;
                        } else {
                            PrintAccntInfo(resp_int,our_bank);
                            badinputchk = false;
                        }
    }
  • 4
    Вы можете показать код, в котором вы устанавливаете переменную и вызываете PrintAccntInfo?
  • 2
    Если вы думаете , вызывающий это не важно, вы ошибаетесь.
Показать ещё 4 комментария
Теги:

3 ответа

3
Лучший ответ

Причина, по которой вы всегда получаете функцию 0, состоит в том, что условие

if (resp_int = 0)

устанавливает resp_int в 0 и оценивает значение false, поэтому он всегда переходит внутрь "else", где функция вызывается с resp_int (которая равна 0)

Вы должны заменить его if (resp_int == 0)

0

Я думаю, что значение x выходит за рамки. Лучше вы можете показать, как вы вызываете функцию PrintAccntInfo() и определение x.

  • 0
    Хорошо, я добавил в код. Вы не возражаете против другого взгляда?
0

Имейте в виду, что переменные имеют "область".

int i = 10;

int func(int i) {
    if (i > 0) {
       int i = 23 + i;
       std::cout << "inside func, inside the if, the i here is " << i << std::endl;
    }
    return i;
}

int main() {
    int i = 15;
    if (i == 15) {
        int i = func(100);
        std::cout << "in this part of main, i is " << i << std::endl;
    }
    std::cout << "But in the end, the outer i is " << i << std::endl;
}

Ещё вопросы

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