kykyryky
@kykyryky

Как работает программа?

#define A abc 
#define B(arg) #arg 
#define C(arg) B(arg) 
#include "stdio.h"
int main() 
{ 
printf("%s\n",B(A));//"А"
printf("%s\n",C(A));//"abc"
}


Вывод:

А
abc


Почему так работает? Почему выводит не A и А, или не abc и abc?
  • Вопрос задан
  • 358 просмотров
Решения вопроса 1
Olej
@Olej
инженер, программист, преподаватель
Это элементарно из синтаксиса C: в макросах #arg - не разрешать значение arg.
Во втором случае C(A) разрешает аргумент A ещё до вызова B(A).

P.S. Только тэги пишите правильно - это C, а не C++ !
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы