Значение не меняется после передачи по ссылке - PullRequest
1 голос
/ 17 апреля 2019
#include<string.h>
#include<limits.h>
using namespace std;


void v6(char rq,int &cost)
{
    if(rq=='2')
        cost+=1;

    if(rq=='1')
        cost+=2;

    if(rq=='3')
        cost+=3;
}

int main()
{
    int cost=0;
    v6(2,cost);
    cout<<cost;
}

Выход: 0

Однако значение, передаваемое по ссылке c, не изменяется; объясните пожалуйста как.

тоже использовал указатели, но безрезультатно

Ответы [ 2 ]

4 голосов
/ 17 апреля 2019

Я незначительное изменение в вашем вызове функции должно дать вам поведение, которое вы хотите

v6('2',cost);

Ваши if операторы проверяют для char, а не для числа.Либо вы применяете указанные выше изменения, либо изменяете if заявления

void v6(char rq,int &cost)
{
    if(rq==2)
        cost+=1;

    if(rq==1)
        cost+=2;

    if(rq==3)
        cost+=3;
}
2 голосов
/ 17 апреля 2019

Вы передаете Numeric 2 вместо char 2 в вызове функции.

v6(2,cost); должен быть заменен на v6('2',cost);

Передача 2 пройти ASCII эквивалент 2 (http://www.asciitable.com/).

ASCII эквивалент '2'Число 50. Таким образом, v6(50,cost); или v6('2',cost); даст вам тот же результат.

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