| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 456 人关注过本帖
标题:为什么i和j输出的值会变
只看楼主 加入收藏
tk0212
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-7-25
结帖率:100%
收藏
已结贴  问题点数:1 回复次数:4 
为什么i和j输出的值会变
# include <stdio.h>
   int main(void)
{
   int i, j, k, m;
   i = j = 3;
   k = i++;  //后自增整体表达式的值是i加1之前的值;
   m = ++j;  //前自增整体表达式的值是j加1之后的值;

   printf("i = %d, j = %d, k = %d, m = %d\n",i, j, k, m);

   return 0;
}
运行结果:/* i = 4, j = 4, k = 3, m = 4 */

我以为i和j的值应该是3和3,为什么变成4和4了, i++和++j不是分别赋给k和m了吗,为什么它自身的值也都加了1,我明白i++和++j的含义,就是不明白为什么输出的i和j的值
初学者,还往解答,谢谢
搜索更多相关主题的帖子: 表达式 return include 
2015-07-14 13:07
lwei
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:197
专家分:369
注 册:2005-5-4
收藏
得分:1 
这样是不是更加清楚一点:
//k=i++;m=++j;相当于
k=i;
i=i+1;
j=j+1;
m=j;
对后面的printf来说,++在前还是在后其实是没有区别的。

2015-07-14 14:39
tk0212
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-7-25
收藏
得分:0 
以下是引用lwei在2015-7-14 14:39:12的发言:

这样是不是更加清楚一点:
//k=i++;m=++j;相当于
k=i;
i=i+1;
j=j+1;
m=j;
对后面的printf来说,++在前还是在后其实是没有区别的。

这样我能明白它们为什么等于3,那么它们是等价的吗?
2015-07-14 14:49
星泪成寒
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:6
帖 子:77
专家分:549
注 册:2013-5-19
收藏
得分:1 
++操作就是自身加1啊
2015-07-14 16:28
狐兮魂轨
Rank: 2
来 自:chengdu
等 级:论坛游民
帖 子:8
专家分:22
注 册:2015-4-18
收藏
得分:1 
i++ 本生就等价于 i = i + 1;(i++ --->i对应的内存空间的值就已发生改变了,在把改变的值付给变量)
而你认为的i不变的情况是 a = i + 1;(i对应内存空里的值就没有发生改变,)


微机原理。
2015-07-14 16:34
快速回复:为什么i和j输出的值会变
数据加载中...
 
   



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

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