#include <stdio.h> #include <stdbool.h> _Bool isOu(int n){ //高度注意:&的优先级低于== if((n&1)==0){ return true; } else{ return false; } } int main(int argc, char *argv[]) { int a=23,b=26; printf("a=23,b=26\n"); printf("a is %s\n",isOu(a)?"ou":"ji"); printf("b is %s\n",isOu(b)?"ou":"ji"); return 0; }
1、对一个数位与1是用来取位,n&1就可以将数字n最低位取出,如果n最低位是0(这里指n的二进制表示,所有的数在内存均是以二进制形式表示),那么表示n为偶数,因为最低位为0,表示可以整除2,这是二进制常识(如果不理解,可以看110,1230,350,201,29810这几个随机选的10进制数那些可以整除10,为什么?你就明白为啥二进制尾部为0,可以整除2了)。如果n最低位为1,那么表示n为奇数。
2、高度注意&的优先级低于==,这可是个意外啊。