0

変数を介して以下の関数に整数を渡すと(つまり、x = 1 PrintAccntInfo( x, bank_name) )、実際の値に関係なく、関数によって常に0として読み取られます。ただし、値を直接入力すると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

3 に答える 3

3

関数で常に 0 を取得する理由は、その条件です

if (resp_int = 0)

0 に設定され、resp_intに評価されるfalseため、関数が resp_int(0 である) で呼び出される "else" 内に常に入ります。

あなたはそれを置き換える必要がありますif (resp_int == 0)

于 2013-10-30T07:57:52.297 に答える
0

x の値は範囲外だと思います。関数 PrintAccntInfo() と x の定義をどのように呼び出すかを示したほうがよいでしょう。

于 2013-10-30T07:17:12.097 に答える