1

我正在尝试制作一个计算 2 n和 2 n - 1的宏。那将是:

#define b(n) (2 << (n))
#define a(n) ((b(n))-1)

但是由于某种原因,这将其转换为int,但我愿意使用unsigned long int. 有谁知道如何解决这个问题?我曾考虑过使用内联函数,但是我并没有完全掌握类函数宏和内联函数之间的区别。

4

1 回答 1

1

OP想要unsigned long int,然后在您的宏中使用该类型

#define b(n) (1UL<<((unsigned)(n)))

使用 OP 时,结果是(2 << (n))类型int,如. 带有and的运算符导致. 而是始终使用。2int<<intunsignedintunsigned


此外,为了模拟power(2,n),OP当然想使用1左移,而不是2左移。

于 2013-10-12T04:11:27.007 回答