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)

设置resp_int为 0 并计算为false,所以它总是在“else”中使用 resp_int(which is 0) 调用函数

您应该将其替换为if (resp_int == 0)

于 2013-10-30T07:57:52.297 回答
0

我认为 x 的值超出了范围。最好能说明如何调用函数 PrintAccntInfo() 和 x 的定义。

于 2013-10-30T07:17:12.097 回答
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;
}
于 2013-10-30T07:20:29.977 回答