在C语言中,这个宏定义了什么?
其计算结果为左移1位,即该数字也称为2在C语言中,这个宏定义了什么?,c,macros,c-preprocessor,bit-shift,C,Macros,C Preprocessor,Bit Shift,其计算结果为左移1位,即该数字也称为2 由于乘法运算符*比位移位运算符绑定得更紧,因此其计算结果为向左移位1位,即数字也称为2 由于乘法运算符*比位移位运算符绑定得更紧,所以向左移位了一位。这将导致两个问题。我无法想象这个宏的基本原理。一,左移一位。这将导致两个问题。我无法想象这个宏的原理。< > >代码> 1 > P>代码> 1 > P> C++操作符优先级,首先计算 */Cuth>运算符,并将其计算为值 1 >代码>,然后将其左移一位,即值 2 ^ 1 < /代码>或仅 2 < /C> >P
由于乘法运算符
*
比位移位运算符绑定得更紧,因此其计算结果为向左移位1位,即数字也称为2
由于乘法运算符*
比位移位运算符绑定得更紧,所以向左移位了一位。这将导致两个问题。我无法想象这个宏的基本原理。一,左移一位。这将导致两个问题。我无法想象这个宏的原理。< > >代码> 1 > P>代码> 1 > P> C++操作符优先级,首先计算<代码> */Cuth>运算符,并将其计算为值<代码> 1 >代码>,然后将其左移一位,即值<代码> 2 ^ 1 < /代码>或仅<代码> 2 < /C> >P>P>每C++操作符优先级,先计算<代码> */Cuth>运算符,计算值为代码< 1 >代码>,然后向左移动一位,即值<代码> 2 ^ 1 < /代码>或仅<代码> 2 < /C> >p> 11说:
00000001
<< 1
==========
00000010
也许目的是最终用另一个宏替换1*1中的一个(或两个)术语作为编译时参数,但从未被记录,最终被遗忘。不幸的是,这种事情太频繁了。这似乎是一种奇怪的迂回说法:
00000001
<< 1
==========
00000010
也许目的是最终用另一个宏替换1*1中的一个(或两个)术语作为编译时参数,但从未被记录,最终被遗忘。不幸的是,这种情况经常发生。接受,因为您解释了运算符优先级。Thanx已接受,因为您解释了运算符优先级。如果你猜对了,代码下面的是NUM\u SQ\u 1(1)如果你猜对了,代码下面的是NUM\u SQ\u 1(1
00000001
<< 1
==========
00000010
#define NUM_SQ_0 2