#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;
на глобальный, и это тоже сработало!