| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 746 人关注过本帖
标题:自增运算!愁
只看楼主 加入收藏
我乃新手
Rank: 2
等 级:论坛游民
帖 子:52
专家分:73
注 册:2012-7-23
结帖率:100%
收藏
已结贴  问题点数:50 回复次数:11 
自增运算!愁
程序代码:
#include<iostream>
      using namespace std;
      int main(void){
        int i=10;
        printf("i++=%d,i=%d,i++=%d\n",i++,i,i++);
        return 0;
        }        

    结果为什么是11,12,10   ???
    printf不是先从右往左入栈,然后再出栈么?
    大神帮忙分析一下!
2012-07-28 12:20
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1933
专家分:3012
注 册:2009-12-22
收藏
得分:13 
i++    先被操作再自增1
++i    先自增1再被操作

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2012-07-28 12:25
我乃新手
Rank: 2
等 级:论坛游民
帖 子:52
专家分:73
注 册:2012-7-23
收藏
得分:0 
以下是引用yuma在2012-7-28 12:25:48的发言:

i++    先被操作再自增1
++i    先自增1再被操作


我知道i++,++i,就是不知道结果。
我是说结果是怎么一回事,结果是怎么过来的!!
过程明细化.........
2012-07-28 12:28
a7882669
Rank: 4
等 级:业余侠客
帖 子:192
专家分:290
注 册:2012-4-17
收藏
得分:13 
不懂
2012-07-28 12:47
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1933
专家分:3012
注 册:2009-12-22
收藏
得分:0 
妳寫的那個源代碼,我用TC VC都無法進行編譯,真不知道妳那得到的結果是怎麽來的。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2012-07-28 12:53
LShang
Rank: 4
来 自:China
等 级:业余侠客
威 望:3
帖 子:183
专家分:258
注 册:2010-12-24
收藏
得分:13 
编译器的问题,我用TC和VC分别得到了均不同于楼主的结果
楼主自己反汇编看下参数如何入栈的就知道了呗
不知道楼主用的啥编译器,解释不了

学如逆水行舟,不进则退
士不可以不弘毅,任重而道远
2012-07-28 13:02
LShang
Rank: 4
来 自:China
等 级:业余侠客
威 望:3
帖 子:183
专家分:258
注 册:2010-12-24
收藏
得分:0 
回复 5楼 yuma
应该是
 using namespace std;
这句的问题
楼主的应该是CPP文件

学如逆水行舟,不进则退
士不可以不弘毅,任重而道远
2012-07-28 13:03
我乃新手
Rank: 2
等 级:论坛游民
帖 子:52
专家分:73
注 册:2012-7-23
收藏
得分:0 
以下是引用yuma在2012-7-28 12:53:32的发言:

妳寫的那個源代碼,我用TC VC都無法進行編譯,真不知道妳那得到的結果是怎麽來的。



我是在Linux下用vim编译的,就是问一下printf输入i++,i,i++的结果!
亲,明白了么?
你把using namespace std;去掉就可以编译了
VC6.0的结果是10,10,10  没有统一的标准
2012-07-28 13:07
LShang
Rank: 4
来 自:China
等 级:业余侠客
威 望:3
帖 子:183
专家分:258
注 册:2010-12-24
收藏
得分:0 
楼主的代码跟
i = i++ + ++i + i++ + ++i + i++;

这种代码没啥区别,没有研究价值

学如逆水行舟,不进则退
士不可以不弘毅,任重而道远
2012-07-28 13:10
我乃新手
Rank: 2
等 级:论坛游民
帖 子:52
专家分:73
注 册:2012-7-23
收藏
得分:0 
回复 7楼 LShang
嗯,在linux下用vim编译的.cpp文件!
就是不懂结果为什么是11,12,10
why??????

要是printf("i=%d,i++=%d,i++=%d",i,i++,i++)
结果就是12,11,10??
这个printf是从右向左入栈的,这个结果应该不难想到,
就是上面的结果不知怎么来的!
2012-07-28 13:12
快速回复:自增运算!愁
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020726 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved