自增
想问下q的值不应该是24吗 ,为什么是22,求指点 编译器问题,每个编译器可能得到的值都不一样。 你的程序我运行了一下,运行结果为18,22,8,8在我看来,p=5+6+7=18;
q=6+7+8=21;
可是不理解为什么q=22 看c语言课本(蓝色皮)的27页上边有 编译器问题 0040DF9F C7 45 F8 05 00 00 00 mov dword ptr ,5 //ebp-8=5
17: q=(++j)+(++j)+(++j);
0040DFCD 8B 4D F8 mov ecx,dword ptr //ecx=5
0040DFD0 83 C1 01 add ecx,1 //ecx=5+1=6
0040DFD3 89 4D F8 mov dword ptr ,ecx//ebp-8=6
0040DFD6 8B 55 F8 mov edx,dword ptr //edx=6
0040DFD9 83 C2 01 add edx,1 //edx=6+1=7
0040DFDC 89 55 F8 mov dword ptr ,edx //ebp-8=7
0040DFDF 8B 45 F8 mov eax,dword ptr //eax=7
0040DFE2 03 45 F8 add eax,dword ptr //eax=7+7=14
0040DFE5 8B 4D F8 mov ecx,dword ptr //ecx=7
0040DFE8 83 C1 01 add ecx,1 //ecx=7+1=8
0040DFEB 89 4D F8 mov dword ptr ,ecx //ebp-8=8
0040DFEE 03 45 F8 add eax,dword ptr //eax=14+8=22
0040DFF1 89 45 F0 mov dword ptr ,eax //ebp-10h=22
你看下汇编就知道情况了,问题在与前两个相加的时候,是用7+7,其实这个计算式最后的结果就是q=j+j+j
只是j的值不一样 都不会搜索么https://fishc.com.cn/thread-152900-1-1.html
https://fishc.com.cn/thread-132932-1-1.html 你看的旧课吧,这个代码好像语法不规范,所以编译器得到的答案不一样,还是看新课吧 367 发表于 2020-2-11 14:48
你的程序我运行了一下,运行结果为18,22,8,8
在我看来,p=5+6+7=18;
q=6+7+8=21;
你这脑回路和我差的有点多 4goodworld 发表于 2020-2-11 15:32
你看下汇编就知道情况了,问题在与前两个相加的时候,是用7+7,其实这个计算式最后的结果就是q=j+j+j
只 ...
哥,我还没学汇编,看的不太懂,能解释更详细点吗 王逗比666 发表于 2020-2-11 17:27
你看的旧课吧,这个代码好像语法不规范,所以编译器得到的答案不一样,还是看新课吧
我两个都在看,希望理解更深点 张世来4610484 发表于 2020-2-11 21:38
我两个都在看,希望理解更深点
因为旧课的参考教材是《C程序设计》这书放到现在看有些老了,一些东西不适合用在现在,如果你要两种一起学那么案例什么的要以新课为主,旧课用来加深概念映像 张世来4610484 发表于 2020-2-11 21:38
我两个都在看,希望理解更深点
你的问题当时我也困惑过,后来了解了一下这个代码属于语法不规范,不要纠结,因为它是因为代码本身不正确而导致输出结果不同的 张世来4610484 发表于 2020-2-11 21:37
哥,我还没学汇编,看的不太懂,能解释更详细点吗
ebp-8就是j
ebp-10h就是q
其他的你都看成变量得了
你看我注释部分,不就很清楚了吗? 我的也有这个问题,解决不了
页:
[1]