Member 12684894 Ответов: 2

Каков вывод следующего кода?


#include <stdio.h>
#define print (a) printf ("%d", a)
int a;
void A (int p)
{
	p+ = a;
	print (p);
}
void B(int *q)
{
	int p = *q + 3;
	A (a);
	*q = a – 2;
	print  (a);
	}
Main (void)
{
	a = 6;
	B(&a);
	print(a);
}


Что я уже пробовал:

не удалось выяснить вывод следующего кода

2 Ответов

Рейтинг:
1

Patrice T

Цитата:
Каков вывод следующего кода?
Есть простой способ узнать вывод этого кода, просто запустите его, и вы увидите.

В противном случае, чтобы понять, что делает код, научитесь использовать отладчик как можно скорее.
Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]


Рейтинг:
0

Afzaal Ahmad Zeeshan

Это что, псевдокод? Потому что следующая строка,

Main (void)

должны быть изменены, чтобы,
int main (void)

Затем остальная часть программы будет скомпилирована и покажет результат, который вы хотите. Но сначала есть несколько изменений, которые вы, возможно, захотите внести. Взгляните на следующую программу (без ошибок компиляции),
#include <stdio.h>
#define print(a) printf("%d\n",a) // Removed the spaces.

int a;

void A (int p)
{
	p += a; // + = is not same as +=
	print (p);
}
void B(int *q)
{
	int p = *q + 3; // Why create this?
	A (a);
	*q = a - 2;
	print  (a);
}
	
int main (void)
{
	a = 6;
	B(&a);
	print(a);
}
/* Output:
 * 12
 * 4
 * 4
 *
 */

Внесенные изменения заключались в том, что вы должны избегать добавления пробелов в макрос, он ожидает, что правая часть уже началась или что-то в этом роде. Во-вторых, программы C/C++ должны быть ASCII (или Unicode в случае только строк), и если вы не используете эту кодировку, компилятор будет жаловаться. Рекомендую сначала изучите основы программирования на языке Си[^Кроме того, если вы хотите поделиться такими программами в будущем, пожалуйста, создайте онлайн-скрипку C/C++ по адресу cpp.sh, вот так, Оболочка C++ [^]

Если это не было ожидаемым результатом, пожалуйста, взгляните на логику вашей программы.