| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 766 人关注过本帖
标题:i++,为什么不是在一个语句结束之后才加1吗,为什么结果不是5
只看楼主 加入收藏
li_danwang
Rank: 4
来 自:鄂州
等 级:业余侠客
帖 子:112
专家分:203
注 册:2010-11-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
i++,为什么不是在一个语句结束之后才加1吗,为什么结果不是5
#include<stdio.h>
void main()
{
    int i=5;
    i++, printf("%d\n",i);//注意  ,我这里是逗号表达式,我认为应该是这个语句结束以后i才会加1,但是输出结果却是6,太奇怪了。




[ 本帖最后由 li_danwang 于 2010-12-28 15:10 编辑 ]
搜索更多相关主题的帖子: 表达式 
2010-12-28 13:38
zdyzhang
Rank: 9Rank: 9Rank: 9
来 自:栖息地
等 级:蜘蛛侠
威 望:4
帖 子:2335
专家分:1227
注 册:2008-9-20
收藏
得分:3 
{
    int i=5;
    i++, printf("%d\n",i);
   
}
这个i++后面竟然是逗号,不知道原代码是这样,还是写错了。

悲剧源于生活。
2010-12-28 14:18
简安
Rank: 2
来 自:湖南长沙
等 级:论坛游民
帖 子:25
专家分:17
注 册:2010-11-26
收藏
得分:3 
i++意思是i=i+1
 
 楼主是这个不知道吧?
2010-12-28 14:59
寒枫雪
Rank: 2
等 级:论坛游民
帖 子:53
专家分:25
注 册:2009-1-22
收藏
得分:3 
逗号表达式是每个分式都进行计算,然后表达式的值是最后一个分式的值,前面i++也是进行计算了的。
2010-12-28 15:29
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:3 
  楼主可真有意思啊   
每一个运算符  把它看成有返回值 有参数的函数
那我们就看一下你的那个为什么是6
程序代码:
#include<stdio.h>
int addadd(int *pa)
{
    int temp;
    temp=*pa;
    *pa=*pa+1;
    return temp;
}
void main()
{
    int i=5;
    addadd(&i);//你的i++就是这样的一个函数
    printf("%d\n",i);//
}
因为这是在C区  所以没有引用的概念
那就只好用指针来实现了  实际上是引用的传递  
这是C++的东西   楼主不必深究  楼主可以想象一下 ++i的那个函数是怎么实现的

                                         
===========深入<----------------->浅出============
2010-12-28 18:37
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:3 
我tc2.0结果是6 用的就是逗号  一直没发现逗号也能用啊

粗心是大敌
2010-12-28 21:55
快速回复:i++,为什么不是在一个语句结束之后才加1吗,为什么结果不是5
数据加载中...
 
   



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

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