2013-04-08 3 views
0

Простой вопрос, но я не могу найти ответ. Можно ли использовать #define определить отрицательное число, например:#define отрицательные числа?

#define kGravity -9.8 

XCode меняется 9.8 к цвету моих номеров я набор (фиолетовый), но - показывается, как тот же цвет как оператор определения (оранжевый).

Это законный? Скомпилирует ли он?

+1

Обычно лучше иметь '()' вокруг любых определений, подобных тому, что только в том случае, если выражение, в котором они заканчиваются, вызывает путаницу из-за последовательности операторов. Не могу придумать пример прямо сейчас ... Вы пытались его скомпилировать? Что случилось? – Floris

+0

Он успешно сработал. Я просто хочу убедиться, что когда я использую код как 'float v = vo + (kGravity * time),' что kGravity будет заменено как '-9.8' вместо' + 9.8' – David

+2

Вы всегда можете попробовать 'printf («мой номер% f \ n», kGravity) ', чтобы посмотреть, что произойдет. Не знаете, почему вам нужно спросить сообщество? – Floris

ответ

6

Вы попробовали? Он должен работать нормально.

Однако я бы рекомендовал вам не использовать макросы препроцессора, а вместо этого использовать реальные константы.

static const float kGravity = -9.8f; 

Директивы препроцессора немного нахмурены, в общем. Вот еще информация по теме: #define vs const in Objective-C

2

Абсолютно законно определять отрицательные константы с #define. Скорее всего, вы обнаружили ошибку в кодировке кода Xcode, которая, вероятно, будет исправлена ​​в одной из будущих версий.

+2

Грамматически, '-' не является частью числа. Это унарный оператор. Следовательно, окраска «Числа» не применяется. Он окрашен в соответствии с настройками «Препроцессорные отчеты» или «Обычный текст» в зависимости от контекста. –

Смежные вопросы