Я знаком с условной компиляцией с макросами на языке "C", но какой-то фрагмент кода меня смущает, я могу понять, как работает CODE-1, в X ничего не назначено, поэтому Y определен как 5 (условие другое ) и при печати Y мы получим 5 в качестве вывода.
, но в CODE-2
, который очень похож на CODE-1
, за исключением
"#if X == A"
условие, которое дает вывод как 3
, что я не понимаю, как оно может производить вывод как 3
. Может кто-нибудь сказать мне, как
"#if X == 3"
и
"#if X == A"`
влияет на вывод.
КОД-1
#include <stdio.h>
#if X == 3
#define Y 3
#else
#define Y 5
#endif
int main()
{
printf("%d", Y);
return 0;
}
//output : 5
КОД-2
#include <stdio.h>
#if X == A
#define Y 3
#else
#define Y 5
#endif
int main()
{
printf("%d", Y);
return 0;
}
//output : 3
Я ожидаю, что выход CODE-2
будет 5
, но фактический вывод 3
.