上面这个C函数程序,计算(x>y?x:y)后,该值就存在AX(EAX)中,当你在其他函数中调用该函数
后,比如
a=max(m,n)后,其实就是进入max()完成后,函数返时将计算结果存放在AX中,执行这个语句后,即就将AX的值传给了a.
其实,这也很容易验证:
在调用
a=max(m,n)
紧接着输入以下语句(注意:这中间绝对不能有其他任何函数调用和语句):
b=_AX
printf("a=%d,b=%d",a,b)
你就可能发现,a=和b=一定是同一个值。
s+=a[0]s+=a[2]
s+=a[1]
s+=a[3]
s+=a[0]
将数组索引在循环里的值展开后得到
s=1+3+2+4+1
因此结果应该为11
x=(a=3,b=a--),号运算符 是 从左到右依次求表达式 最后值是最右边的表达式
x是(b=a--) 这个表达式的值 b=a--等价于 b=a a== 所以x=3 a-- =2; b=3
结果应该是 3 3 2你说的为什么是 3 2 3 要不是题错了 要不是你心算的结果 编译器不会把 a--以后的结果保存在别处 只能是a的地址 所以肯定最后a =2