| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 313 人关注过本帖
标题:大家帮忙看看这个程序!为什么会是这样的
只看楼主 加入收藏
a8123200z
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2009-6-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
大家帮忙看看这个程序!为什么会是这样的
本人初学,请教一下这个程序为什么I=9,J=11
2009-07-30 15:50
a8123200z
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2009-6-2
收藏
得分:0 
补充一下
#include<stdio.h>
main()
{
int i,j,m,n;
i=8,j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d\n",i,j,m,n);
getch();
}
2009-07-30 15:51
godbless
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:216
专家分:950
注 册:2009-7-24
收藏
得分:0 
好好看看关于i++,++i,i--和--i的那一章节.
2009-07-30 16:02
a8123200z
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2009-6-2
收藏
得分:0 
回复楼上
呵呵,谢谢哦,不过我看了,我理解的意思就是++i是在运算之前加1,i++是在运算过一次之后再加1。。。。所以没弄懂这点。麻烦指点迷津
2009-07-30 16:21
snkjay456
Rank: 1
等 级:新手上路
帖 子:1
专家分:5
注 册:2009-7-16
收藏
得分:5 
初略地看,++i和i++的作用相当于i=i+1。正如你所说,++i和i++不同之处在于++i是先执行i=i+1后,再使用i的值;而i++是先使用i的值后,再执行i=i+i。
如果i得值等于3:
(1)j=++i;(i的值先变成4,在赋给j,j的值为4)
(2)j=i++;(先将i的值3赋给j,j的值为3,然后i变为4)
2009-07-30 22:49
soler
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:181
专家分:1077
注 册:2005-7-16
收藏
得分:10 
在一份资料上看到的,
i++,
++i
作为前缀,先自加或者自减然后作别的运算。
作为后缀,是在本运算单位结束之后再自加或者自减。
i=8,j=10;
m=++i;
n=j++;

拿本例来说,++i,i先自加,然后把i=9赋值给m
n=j++; 先作n=j运算,;表示此次运算结束,然后j自加。
所以这个地方n=10,j为11。

这个论坛里面有人发了一个c语言深度解剖的pdf文件,你可以找到了去看看。
2009-07-31 01:49
soler
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:181
专家分:1077
注 册:2005-7-16
收藏
得分:5 
程序代码:
main()
{
    int i=3,j=3;
    int k,h;
    k=(i++)+(i++)+(i++);
    h=(++j)+(++j)+(++j);
    printf("%2d%2d%2d%2d",k,h,i,j);
    getch();
}

这道题,不同的编译器算出来的结果不一样,但是k,i,j值是确定的,分别是9,6,6
wintc算出来k为18
vc++6和codeblocks算出来的是16
但是你要是算出15的话绝对是错的。
自己去慢慢理解吧。
2009-07-31 02:12
快速回复:大家帮忙看看这个程序!为什么会是这样的
数据加载中...
 
   



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

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