c-当变量n2必须为0时,为什么它是1


#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 

相关内容

最新更新