2013-04-08 34 views
0

簡單的問題,但我似乎無法找到答案。它是怎麼運用#define定義一個負數,如:#定義負數?

#define kGravity -9.8 

Xcode是改變了9.8到我的號碼的顏色我已經設置(紫色),但-被顯示爲相同的顏色作爲定義語句(橙色)。

這合法嗎?它會編譯?

+1

通常最好在這樣的定義周圍有'​​()',以防止由於一系列運算符而導致表達式混淆。現在無法想到一個例子......你是否試圖編譯它?發生了什麼? – Floris 2013-04-08 02:02:15

+0

它確實構建成功。我只是想確保當我使用像'float v = vo +(kGravity * time)'這樣的代碼時''這個kGravity將被替換爲'-9.8'而不是'+ 9.8' – David 2013-04-08 02:04:42

+2

您可以隨時嘗試'printf( 「我的號碼是%f \ n」,kGravity)'看看會發生什麼。不知道爲什麼你需要問社區? – Floris 2013-04-08 02:06:46

回答

6

你試過了嗎?它應該工作正常。

但是,我鼓勵你不要使用預處理器宏,而是使用實常量。

static const float kGravity = -9.8f; 

一般來說,預處理器指令有點不爽。這裏有一些關於這個主題的更多的信息:#define vs const in Objective-C

2

#define定義負常數是絕對合法的。你發現的很可能是Xcode代碼着色中的一個錯誤,它可能會在未來的修訂版本中修復。

+2

從語法上講,'-'不是數字的一部分。它是一個一元運算符。因此「數字」着色不適用。它根據上下文根據「預處理器語句」或「純文本」設置進行着色。 – 2013-04-08 02:18:04