我得到以下代码:
if (a & 1){
...
}
Run Code Online (Sandbox Code Playgroud)
但是我什么时候进入if条件?没有==或!=.我很困惑......我什么时候进入if状态呢?
小智 7
在C中,任何非零表达式都被认为是真的.
我在这里为您举个例子:
int a = 5;
if(a & 1)
{
printf("hello");
}
else
{
printf("where am I?");
}
Run Code Online (Sandbox Code Playgroud)
你得到一个整数a是5. 5,二进制数字是0101.你得到1. 1二进制数字是0001.现在二进制AND操作这两个:
0101
& 0001
_________
0001
Run Code Online (Sandbox Code Playgroud)
扩展AND操作:
0 & 0 -> 0;
0 & 1 -> 0;
1 & 0 -> 0;
1 & 1 -> 1;
Run Code Online (Sandbox Code Playgroud)
现在我们看到了.每当我们1在整数的末尾(这里是整数a = 5)时,我们得到一个最后的解决方案1.在C:你进入if条件,如果你问的条件(这里a & 1)是TRUE.如果你收到一个条件,情况就是如此1.所以,每次你收到一个1(000000 ... 001也是1)你打印"hello",如果你得到任何东西1(例如4 & 1- > 0100 & 0001 = 0000- >接收a 0)你打印出来"where am I?".