c语言中计算结果怎么存储

Python011

c语言中计算结果怎么存储,第1张

所有C函数,只要其有返回值,都是由寄存器Ax(对于32位而言为EAX,如果AX不足以容纳,则由DX保存超过AX容量的部分)保存的(也可能是值,也可能是某一地址,视返回类型而定)。

上面这个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