我正在尝试制作一个计算2 n和2 n-1的宏。那将是:
#define b(n) (2 << (n))
#define a(n) ((b(n))-1)
但是由于某些原因int
,我愿意使用它unsigned long int
。有谁知道如何解决这个问题?我曾经考虑过使用内联函数,但是我没有完全掌握函数式宏和内联函数之间的区别。
OP想要unsigned long int
,然后在宏中使用该类型
#define b(n) (1UL<<((unsigned)(n)))
使用OP时(2 << (n))
,结果为type int
,2
即为int
。<<
带有int
和的运算符,unsigned
结果为int
。而是unsigned
整个使用。
进一步地,为了模拟power(2,n)
,OP当然希望使用1
向左2
移动而不是向左移动。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句