Пожалуйста, объясните код
#include <stdio.h>
#define A(a,b) a##b
#define B(a) #a
#define C(a) B(a)
main()
{
printf("%s\n",C(A(1,2)));
printf("%s\n",B(A(1,2)));
}
Выход
12
А (1,2)
Я не понимаю, как первый printf оценивает до 12? Разве это не похоже на второе, так как макрос макроса - это просто оболочка для макроса B?