恒大采购员工资待遇:c语言程序设计题目

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 08:51:08
设有:int a=1,b=2,c=3.,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为:

我想知道详细的解答过程

答案是:2
"&&"的算法是前后都是真的时候,整个语句或表达式才是真确的.
a=1,b=2 显然A<B,所以后面的就不执行,N为原值2

2
因为&&前面已经得0,所以后面根本不执行了

自己也不懂,调试后,查看汇编结果,楼上结论正确.
((m=a>b)&&(n=c>d));
00411AA8 mov eax,dword ptr [a]
00411AAB xor ecx,ecx
00411AAD cmp eax,dword ptr [b]
00411AB0 setg cl
00411AB3 mov dword ptr [m],ecx
00411AB6 cmp dword ptr [m],0
00411ABA je main+6Ah (411ACAh)
00411ABC mov edx,dword ptr [c]
00411ABF xor eax,eax
00411AC1 cmp edx,dword ptr [d]
00411AC4 setg al
00411AC7 mov dword ptr [n],eax
printf("%i",n);
00411ACA mov eax,dword ptr [n]
注意这2句
00411AB6 cmp dword ptr [m],0
00411ABA je main+6Ah (411ACAh)
即m==0则jump to 00411ACA mov eax,dword ptr [n]
后面的n=c>d确实没执行。

dui

是2。只会执行&&前面的N值没有变