我的代碼中有很多#define
。現在一個奇怪的問題已經出現。C的值定義意外變化
我有這樣的:
#define _ImmSign 010100
(我試圖模擬一個二進制數)
很顯然,我預計的數量成爲10100但是,當我使用數字已經變成4160.
這裏發生了什麼事?我該如何阻止它?
ADDITIONAL
好了,所以這是由於解釋本爲一個八進制的語言。然而,是否有一些聰明的方法來強制語言將數字解釋爲整數?如果以0開頭定義八進制和0X定義十六進制現在我想起來了......
開始了0
010100八進制爲0×1 + 0 * 8 + 1 * 64 + 0 * 512 + 1 * 4096 = 64 + 4096 = 4160。 – 2010-04-18 21:20:45
http://www.boost.org/doc/libs/1_42_0/libs/utility/utility.htm#BOOST_BINARY 這可能對您有用。雖然C++,但我認爲它只是預處理器 – Anycorn 2010-04-18 21:27:59
@aaa thx的建議,但我不認爲我被允許使用第三方庫。 – NomeN 2010-04-18 21:32:51