Операции с возвращаемыми значениями в C

#c #if-statement #return #return-value

#c #оператор if #Возврат #возвращаемое значение

Вопрос:

Я новичок в C и пытаюсь написать супер базовую программу, которая сравнивает 3 числа и возвращает самое большое.

Но когда я пытаюсь напечатать некоторый текст с помощью функций if, он пропускает 2 if и переходит к else . Я мог бы сказать, что это сложнее, чем есть. 🙂

Хорошо, вот мой код:

 #include <stdio.h>

int a;
int b;
int c;

int max(int a, int b, int c) {
    
    if (a>b amp;amp; a>c) {
        return a;
    }
    
    else if (b>a amp;amp; b>c) {
        return b;
    }
    
    else {
        return c;
    }
}

int main()
{
    int d;
    d = max(44,8,16);
    
    if (d==a) {
        printf("a");
    }
    
    else if (d==b) {
        printf("b");
    }
    
    else {
        printf("c");
    }
}
 

Он просто показывает мне букву «с». Больше ничего. Что я должен написать в функциях if, чтобы увидеть символы «a», «b» и «c» в соответствии с возвращаемыми значениями в функции «max»?

Я хочу сохранить функцию max такой, какая она есть. Так возможно ли это сделать?

Заранее спасибо..

Комментарии:

1. a , b , и c неинициализированы. Какое значение вы считаете a или b имеете?

2. Переместите ваши глобальные переменные в main, присвоите им значения 44, 8, 16 и передайте переменные функции.

3. Для упрощения, как насчет: int max(int a,int b,int c) { int ret = a; if (b > ret) ret = b; if (c > ret) ret = c; return ret; } это немного более общее и может быть легко расширено, если бы у нас было: int max(int a,int b,int c,int d) { ... }

4. В вашей основной функции переменным a, b, c не присвоено значение.

Ответ №1:

Вы не присваивали никаких значений a , b , и c . И поскольку они являются глобальными, они неявно инициализируются значением 0. Обратите также внимание, что эти глобальные переменные не совпадают с параметрами max с тем же именем. Параматеры маскируют глобалы.

Переместите глобальные переменные в main и присвоите им значения, затем передайте переменные max .

 int main()
{
    int a=48, b=8, c=16;
    int d;
    d = max(a,b,c);
    ...
 

Комментарии:

1. О, большое вам спасибо. После того, как я попробовал ваше решение, я также попытался перейти int a=48, b=8, c=16; на глобальный, и это тоже сработало!