Задача c: не понять, как раскрывается макрос #define - PullRequest
0 голосов
/ 21 сентября 2018

Здравствуйте,

#define A 1+5
int a = A/A;
NSLog(@"value a %d",a);

это показывает мне результат 11

Пожалуйста, вы можете объяснить мне, как это работает?Я хочу понять шаги, которые делает компилятор, чтобы показать этот результат.заранее спасибо.

1 Ответ

0 голосов
/ 21 сентября 2018
int a = A/A

расширен до int a = 1+5/1+5, то есть 1 + 5 + 5, что составляет 11

, возможно, вы захотите сделать это #define A (1+5)

Макросы не являются функциями.Они не вычисляют значения и не вставляют их в код.Макрос будет просто раскрыт во время написания.

И, кстати, это не компилятор, который расширяет макросы, это препроцессор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...