飞驰吧!少年 发表于 2013-11-10 10:44:21

关于i++问题?

void main()
{
        int i=5,j=5,p,q;
        p=(++i)+(++i)+(++i);
        q=(j++)+(j++)+(j++);
        printf("%d,%d,%d,%d\n",i,j,p,q);
}
为什么p会等于22,不是应该等于21的吗??

乱闯 发表于 2013-11-10 10:44:22

{:1_1:}这个问题不同编译器会有不同的算法 p=22 是因为编译器 先取了前两个的值
p=(++i)+(++i)+(++i) = 7+7+8 = 22
第一次 i =6
第二次 i =7
第三次 i =8
但执行第一个加号时编译器是以 7+7 = 14 来算的

LZ 不懂的话 可以反汇编一下

飞驰吧!少年 发表于 2013-11-10 12:29:00

乱闯 发表于 2013-11-10 10:44 static/image/common/back.gif
这个问题不同编译器会有不同的算法 p=22 是因为编译器 先取了前两个的值
p=(++i)+(++i)+(++i)...

十分感谢!

飞驰吧!少年 发表于 2013-11-10 12:31:31

乱闯 发表于 2013-11-10 10:44 static/image/common/back.gif
这个问题不同编译器会有不同的算法 p=22 是因为编译器 先取了前两个的值
p=(++i)+(++i)+(++i)...

反汇编怎么编,谢谢!

乱闯 发表于 2013-11-10 13:51:30

飞驰吧!少年 发表于 2013-11-10 12:31 static/image/common/back.gif
反汇编怎么编,谢谢!

{:1_1:}小甲鱼视频《零基础入门C语言》中间有反汇编操作的 LZ看了吗?

egbert 发表于 2013-11-10 15:00:19

小甲鱼视频《零基础入门C语言》 百度网盘

飞驰吧!少年 发表于 2013-11-10 15:30:50

乱闯 发表于 2013-11-10 13:51 static/image/common/back.gif
小甲鱼视频《零基础入门C语言》中间有反汇编操作的 LZ看了吗?

反汇编是汇编的课程吧,我还不懂汇编

乱闯 发表于 2013-11-10 16:18:01

飞驰吧!少年 发表于 2013-11-10 15:30 static/image/common/back.gif
反汇编是汇编的课程吧,我还不懂汇编

不全是,但是不懂汇编,那反汇编就不好搞了,那把C学完,(边学C边接触点汇编也是可以的)就学学汇编吧,当然得看LZ自己的发展意向了

飞驰吧!少年 发表于 2013-11-10 17:43:12

乱闯 发表于 2013-11-10 16:18 static/image/common/back.gif
不全是,但是不懂汇编,那反汇编就不好搞了,那把C学完,(边学C边接触点汇编也是可以的)就学学汇编吧, ...

嗯,知道了,谢谢!

云客联盟 发表于 2013-11-10 20:41:17

各种编译器的结果不同。要学怎么防御首先就要知道怎么攻击,要学反汇编首先得看得懂汇编。

tjf 发表于 2013-11-11 20:03:33

我也懂了:lol::big{:1_1:}

bigshan 发表于 2013-11-11 22:20:55

懂汇编的话,直接看看就明白了
页: [1]
查看完整版本: 关于i++问题?