Когда я 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;
}
}
Причина, по которой вы всегда получаете функцию 0, состоит в том, что условие
if (resp_int = 0)
устанавливает resp_int
в 0 и оценивает значение false
, поэтому он всегда переходит внутрь "else", где функция вызывается с resp_int (которая равна 0)
Вы должны заменить его if (resp_int == 0)
Я думаю, что значение x выходит за рамки. Лучше вы можете показать, как вы вызываете функцию PrintAccntInfo() и определение x.
Имейте в виду, что переменные имеют "область".
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;
}