Прошу прощения, если это исключительно элементарно, но я только начал программировать в школе, я все рассмотрел для решения и, к сожалению, ничего не помогло мне в этом. У меня есть этот кусок кода:Работа с синтаксисом вызова функции за пределами функции
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int logic(int a, int b)
{
int c = a % b;
a++;
b--;
printf("==%d %d %d==\n", a, b, c);
return b + a + c;
}
int main()
{
int a, c;
float d, f;
a = 10;
c = 5;
f = 2;
d = logic(a, logic(c, f));
printf("%d %d %.2f %.2f\n", a, c, d, f);
return 0;
}
Теперь выход для этого:
'== 6 1 1==
==11 7 2==
10 5 20.00 2.00'
Теперь проблема заключается в том, как это линия 'd = logic(a, logic(c, f));'
компилировать в отношении логической функции выше. Я предполагаю, что для получения первого вывода логическая функция принимает значение 5 и 2 для c и f и запускает ее через функцию для a и b. Но я полностью зациклен на том, почему следующий вывод '==11 7 2=='
. То, что возвращает 'c + b + a;'
, делает точно, когда я заменяю оператор + запятой, появляется только первое значение в выходе (которое равно 11 независимо от того, какой порядок я помещаю в переменные), остальные 0s.
Пожалуйста, помогите с этим, я невероятно тупик, были у него часами и до сих пор ничего.
Я считаю, что есть недостающий кусок кода. Не могли бы вы добавить его и лучше уточнить, где вы не понимаете? –
Нет, это все. Это точно соответствует тому, что указано выше. Я пытаюсь понять, как первый выход равен 6 1 1, но второй вывод 11 7 2, я не понимаю, как происходит второй выход. – Impugnor
Обратите внимание, что здесь мы имеем дело с * двумя * наборами локальных переменных. Параметры 'logic()' называются 'a' и' b', но эти имена являются * локальными * для 'logic()' и не имеют ничего общего с 'a' и' b', объявленными в 'main() '. – JimmyB