我的代码中有很多#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