Почему эта функция возвращает 0, даже если ей присвоено значение? (С) - PullRequest
0 голосов
/ 30 октября 2018

Ниже приведен код. Когда я проверяю его, он продолжает возвращать 0 по какой-то причине.

float compute_personal_allowance ( float annualSalary ) 
{
    int pa = 0;
    if (annualSalary <= 100000)
        pa == 11850;
    else if (annualSalary > 100000)
        pa == 11850 - 1 * ((annualSalary - 100000)/2);
    return pa;
}

Я проверяю это с помощью:

gcc -lm -std = c99 -o

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

для завершения: также первое присвоение pa неверно:

float compute_personal_allowance ( float annualSalary ) 
{
    int pa = 0;
    if (annualSalary <= 100000)
        pa = 11850;
    else if (annualSalary > 100000)
        pa = 11850 - 1 * ((annualSalary - 100000)/2);
    return pa;
}
0 голосов
/ 30 октября 2018

Ваша проблема лежит здесь:

pa == 11850 - 1 * ((annualSalary - 100000)/2);

== не выполняет присваивание, оно выполняет сравнение. Так что это на самом деле ничего не делает в этом случае. Он оценивается как 1 или 0, а затем просто отбрасывает этот результат. Вместо этого вам нужно

pa = 11850 - 1 * ((annualSalary - 100000)/2);
...