&&的问题
#include<stdio.h>int main(){
int a=1,b=2,m=0,n=0,k;
n=b>a;
k=n&&(m=1);
printf("%d,%d\n",k,m);
}
这个的结果是1,1
但如果改成这样
#include<stdio.h>
int main(){
int a=1,b=2,m=0,n=0,k;
n=b>a;
k=n&&(m=0);
printf("%d,%d\n",k,m);
}
结果就是0,0
为什么k的值也是0呢? 因为 && 逻辑运算结果是0啊
k = n && (m=0)
右边将 0 赋值给了 m,同时返回0 #include <stdio.h>
int main(void)
{
int a = 1, b = 2, m = 0, n = 0, k;
n = b > a;
k = n && (m = 0);
printf("%d,%d\n", k, m);
return 0;
}
相当于
#include <stdio.h>
int main(void)
{
int a = 1, b = 2, m = 0, n = 0, k;
n = b > a;
k = ( n && (m = 0) );
printf("%d,%d\n", k, m);
return 0;
}
本帖最后由 人造人 于 2017-12-18 16:06 编辑
k = n && (m = 0);
00007FF646F85821cmp dword ptr ,0
00007FF646F85825je main+80h (07FF646F85840h)
00007FF646F85827mov dword ptr ,0
00007FF646F8582Ecmp dword ptr ,0
00007FF646F85832je main+80h (07FF646F85840h)
00007FF646F85834mov dword ptr ,1
00007FF646F8583Ejmp main+8Ah (07FF646F8584Ah)
00007FF646F85840mov dword ptr ,0
00007FF646F8584Amov eax,dword ptr
00007FF646F85850mov dword ptr ,eax 为什么复制后就无法对齐
&&就是我们说的并且 最后那个k=n&&(m=0)=n&&0=1&&0=0
页:
[1]