#include <stdio.h>
int main()
{
unsigned int n1 =2147483648,num=15;
int n2=num & n1 >0;
printf("%d",n2);
}
n2=1,但根据我的说法应该是0。
由于操作员的优先级,此记录
int n2 = num & n1 >0;
相当于
int n2 = num & ( n1 >0 );
这与相同
int n2 = num & 1;
因此,变量n2
由值1
初始化。
Tp得到你需要写的预期结果
int n2 = ( num & n1 ) > 0;
因为n1
在内部被表示为类似于(printf( "%#xn", n1 );
(
0x80000000