#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、高度注意&的優先級低於==,這可是個意外啊。