我在使用"按位和">(&
(尝试更改x
:
#include <stdio.h>
int main (void){
unsigned long x = 0;
printf("x = %lun", x);
x &= 1;
printf("x = %lun", x);
return 0;
}
我编译并执行代码以获得输出:
x = 0
x = 0
但我预料到了:
x = 0
x = 1
为什么?
您的意思似乎是可以用于设置位的逐位包含OR运算符
x |= 1;
printf("x = %lun", x);
或者你可以使用另一个按位运算符:可用于切换位的按位异或运算符
x ^= 1;
printf("x = %lun", x);
否则0 & 1
将给出0
,因为最初x
是由0
初始化的
unsigned long x = 0;
这是一个演示程序
#include <stdio.h>
int main( void )
{
unsigned long x = 0;
printf( "x = %lun", x );
x |= 1;
printf( "x = %lun", x );
x = 0;
x ^= 1;
printf( "x = %lun", x );
}
程序输出为
x = 0
x = 1
x = 1