Процесс компоновки немного отличается от C по сравнению с другими языками программирования. В C, 3 этапа участвуют в получении файла .exe из файла .src.
xyz.c ->препроцессор ->tmp.c (временные) ->КОМПИЛЯТОРА ->xyz.obj ->ЛИНКЕР ->xyz.exe
В принципе, препроцессор читает ваш код по строкам и, если он является инструкцией предварительной обработки, то он выполняет только директиву предварительной обработки и выводит ваш код в компилятор в чистой текстовой форме.
В случае кода, препроцессор будет посылать этот код компилятор для компиляции:
//includes stdio.h from include folder
int main(void)
{
int i = -1;
int i2 = -2;
printf("%d", i2 - i2);
return 0;
}
Итак, когда компилятор компилирует этот код, это даст результата для печати, как только. Это причина, по которой вы печатаете 0, когда вы используете код. Надеюсь, это вам поможет.
Подсказка: предварительная обработка происходит до компиляции, а имена переменных - это только токены в этой точке. Значение, которое они получают намного позже во время выполнения, не имеет значения. – Quentin
Вы думали о 'ALPHA (-1, i2)'. – paddy
Или это 'АЛЬФА (-i, 12)'? Это также производит '-10'. – Potatoswatter