Chulainn 发表于 2017-5-30 17:18:43

我想问下q是怎么得到22的

本帖最后由 Chulainn 于 2017-5-31 22:05 编辑

我自己觉得应该是6+7+8=21,而不是22.

难以理解机器是怎么算的

#include <stdio.h>
void main()
{
        int i=5,j=5,p,q;
        p=(i++)+(i++)+(i++);
        q=(++j)+(++j)+(++j);
        printf("%d\n,%d\n,%d\n,%d\n",p,q,i,j);
}


这个算出来q是22

^_^^_^^_^^_^ 发表于 2017-5-30 20:37:02

++j相当于 j += 1;
q=(++j)+(++j)+(++j); (j += 1) +(j+=1)+(j+=1)
最后的j = 8
q = 8 + 8 + 8
我这是24 为什么你那会是22

Chulainn 发表于 2017-5-31 19:40:36

^_^^_^^_^^_^ 发表于 2017-5-30 20:37
++j相当于 j += 1;
q=(++j)+(++j)+(++j); (j += 1) +(j+=1)+(j+=1)
最后的j = 8


你好!22是VC6.0 算出来的,我也不知道为啥

^_^^_^^_^^_^ 发表于 2017-5-31 20:29:05

Chulainn 发表于 2017-5-31 19:40
你好!22是VC6.0 算出来的,我也不知道为啥

下个断点然后转到反汇编看看

Chulainn 发表于 2017-5-31 22:05:10

^_^^_^^_^^_^ 发表于 2017-5-31 20:29
下个断点然后转到反汇编看看

不好意思啊,我并不知道啥是断点和反汇编诶。我加的群里有个人跟我说这是未定义语言,可能会得出不同的答案。

^_^^_^^_^^_^ 发表于 2017-5-31 22:33:39

http://blog.csdn.net/qq_29169813/article/details/51416281
页: [1]
查看完整版本: 我想问下q是怎么得到22的