У меня в моем коде есть #define
. Теперь странная проблема подкралась.Значение C неожиданно определяет изменения
У меня есть это:
#define _ImmSign 010100
(Я пытаюсь моделировать двоичное число)
Очевидно, я ожидаю, что число стать 10100. Но когда я использую номер он изменился в 4160.
Что здесь происходит? И как это остановить?
ДОПОЛНИТЕЛЬНЫЕ
Итак, это связано с языком интерпретации это как восьмеричное. Есть ли какой-нибудь умный способ, чтобы заставить язык интерпретировать числа как целые числа? Если ведущий 0 определяет восьмеричной и шестнадцатеричной 0x определяет теперь, когда я думаю об этом ...
010100 в восьмеричной 0 * 1 + 0 * 8 + 1 * 64 + 0 * 512 + 1 * 4096 = 64 + 4096 = 4160. –
http://www.boost.org/doc/libs/1_42_0/libs/utility/utility.htm#BOOST_BINARY Это может быть полезно для вас. хотя C++, я думаю, что это препроцессор только – Anycorn
@aaa thx для предложения, но я не думаю, что мне разрешено использовать стороннюю библиотеку. – NomeN