| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1141 人关注过本帖
标题:C初学者,关于自加自减问题!!
只看楼主 加入收藏
young512
Rank: 1
等 级:新手上路
帖 子:18
专家分:6
注 册:2011-8-13
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:10 
C初学者,关于自加自减问题!!
图片附件: 游客没有浏览图片的权限,请 登录注册
这段输入进去为什么是      
                                                            a++=100
                                                            ++a=102
                                                            a--=102
                                                            --a=100
菜鸟刚入门,求指教,尽量详细

[ 本帖最后由 young512 于 2011-10-2 15:45 编辑 ]
搜索更多相关主题的帖子: 100 102 
2011-10-02 15:44
阿百川
Rank: 2
来 自:大连
等 级:论坛游民
帖 子:18
专家分:33
注 册:2011-8-21
收藏
得分:2 
简单的说,++a就是a马上就自加了,a++就是要等在用到a时才自加
2011-10-02 15:57
zhangyin
Rank: 2
等 级:论坛游民
帖 子:22
专家分:43
注 册:2011-10-2
收藏
得分:2 
第一个a++ = 100 是程序先执行 a = 100后再自加一次,输出100后自加得101;
 第二个++a = 100 是在101基础上先进行自加得102 后再进行赋值运算的到102;
第三个、第四个 与前面相似 ;第三个先运算再自减,第四个在前面基础上先自减在运算。

2011-10-02 16:00
young512
Rank: 1
等 级:新手上路
帖 子:18
专家分:6
注 册:2011-8-13
收藏
得分:0 
回复 3楼 zhangyin
灰常感谢,四个输出函数为什么是有关联的,我还以为是各输各的
2011-10-02 16:10
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
程序代码:
// ++v
int &operator++(int &a)
{
    a += 1;
    return a;
}

// v++
int operator++(int &a, int)
{
    int tmp = a;
    a += 1;
    return tmp;
}

// --v
int &operator--(int &a)
{
    a -= 1;
    return a;
}

// v--
int operator--(int &a, int)
{
    int tmp = a;
    a -= 1;
    return tmp;
}


[ 本帖最后由 lz1091914999 于 2011-10-2 16:25 编辑 ]

My life is brilliant
2011-10-02 16:21
徐仁强
Rank: 2
等 级:禁止访问
帖 子:26
专家分:42
注 册:2011-9-14
收藏
得分:2 
++a先自加1后执行;
a++是先执行后自加1;
--亦如此

2011-10-02 16:54
young512
Rank: 1
等 级:新手上路
帖 子:18
专家分:6
注 册:2011-8-13
收藏
得分:0 
回复 6楼 徐仁强
搞不懂四个输出函数为什么是有关联滴
2011-10-02 17:01
lpsning3379
Rank: 1
等 级:新手上路
帖 子:13
专家分:2
注 册:2011-10-2
收藏
得分:0 
我们才讲,也不知道为什么有关联
2011-10-02 17:41
离开天空的云
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:110
专家分:198
注 册:2011-8-12
收藏
得分:4 
回复 7楼 young512
第一个输出 a++是变量a参与运算后加1,输出100   运行这条语句后a+1, a=101
第二个输出 ++a是变量a加1后参与运算,a+1=102 输出102   运行完以后a=102
第三个输出 a-- 还是变量参与运算后减1,未减一的时候a还是为102 输出102,运行此条语句后a-1, a=101;
第四个输出 --a 是变量a减1后参与运算a-1=100,然后输出~

++或-- 不等与a+1或a-1,那样结果没有保留,应该等于语句a=a+1或a=a-1     所以几个输出函数就有“关联”了。。。。
2011-10-02 18:05
q332010372
Rank: 2
等 级:论坛游民
帖 子:52
专家分:61
注 册:2010-7-27
收藏
得分:5 
a++、++a其实都是a=a+1,也就是说a的值经过这个表达式的时候,就已经被修改了。
但a++和++a有不同之处,a++是先执行后+1,++a是先+1后执行
int a=10;
printf(a++);
printf(++a);
printf(a--);
printf(--a);

那么程序执行到,
第二行:会先输出a的值,然后再+1,也就是先执行,后+1。输出为10,然后a=a+1,a=11
第三行:首先进行+1,a=a+1=11+1=12,然后输出a的值12

像这个      int a = 10,c=0;
            c = ++a + --a + a++ + a-- - a++;
            printf(c);
很多初学者都以为是29(虽然我也是初学者 = =!),但其实是32,计算机会根据优先级从左到右计算,首先
1,计算++a的值,由于a的初始值是10,所以++a的值为11,a的值为11
2,计算+ --a,当前a=11,+ --a,先执行--a,a的值变更为10,然后++a + --a= 11+10=21
3, 计算+ a++ ,当前a=10,+ a++, 先执行+a,a的值依然为10,然后++a + --a + a++ =11+10+10=31
4, 计算+ a-- ,当前a=10, +a--, 先执行+a, a的值依然为10,然后 ++a + --a + a++ + a-- =11+10+10+10=41
5, 计算- a++, 当前a=10, -a++, 先执行-a,a的值依然为10,然后++a + --a + a++ + a-- - a++=11+10+10+10-10=31
最后执行 a++的+1、a--的-1、a++的+1,也就是31+1-1+1=32,a的值经过+1、-1、+1后也就变成了11

也就是++a先进行a=a+1,a++先进行+a,再进行+1
2011-10-02 18:31
快速回复:C初学者,关于自加自减问题!!
数据加载中...
 
   



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

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