| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 678 人关注过本帖
标题:*和++的问题~~~
只看楼主 加入收藏
TGM316750432
Rank: 2
来 自:河南周口
等 级:论坛游民
帖 子:56
专家分:97
注 册:2010-8-27
结帖率:75%
收藏
已结贴  问题点数:5 回复次数:8 
*和++的问题~~~
*S.top++=e  为什么执行的是{*S.top=e;S.top++;}而不是{*S.top=e;(*S.top)++(也即是e++);}?
2010-10-13 21:05
书呆
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:55
专家分:188
注 册:2010-3-26
收藏
得分:1 
++的优先级比*高,所以S.top是和++结合的。

沉醉东风月下读。柴门闭,莫管客来无。
2010-10-13 23:17
niufujun
Rank: 2
等 级:论坛游民
帖 子:16
专家分:37
注 册:2009-4-25
收藏
得分:1 
在c里++和*的优先级是一样的,结合性是从右到左;在c++里++的优先级比*高,所以S.top是和++结合的。
2010-10-14 00:04
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
这个 分两个方向理解 *s.top++首先 方向没有变  右边的++ 先做 再*  但是要注意*s.top++ 连接起来 总共的作用次数就是一次
这主要的区别可以 看下这种情况:s.top++/++s.top;  *s.top;不管前面第一个语句是哪个后面的得出来的结果 都是改变啦 可以
理解成事作用啦两次(具体用什么名词表示也不记得啦)
欢迎指正
2010-10-14 18:48
TGM316750432
Rank: 2
来 自:河南周口
等 级:论坛游民
帖 子:56
专家分:97
注 册:2010-8-27
收藏
得分:0 
回复 2楼 书呆
如果是++优先级高于*  那么就应该是{S.top++;*S.top=e;},这和{*S.top=e;S.top++;}是不一样的  ??
2010-10-15 21:05
TGM316750432
Rank: 2
来 自:河南周口
等 级:论坛游民
帖 子:56
专家分:97
注 册:2010-8-27
收藏
得分:0 
回复 4楼 寒风中的细雨
你说的好像也是++优先级高于*  那么和楼上一样,拆开执行的话也是{S.top++;*S.top=e;}啊,还望说的再明白些
2010-10-15 21:10
makebest
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:658
专家分:962
注 册:2005-3-17
收藏
得分:0 
用起来容易出错, 讨论这些技巧感觉没意思.
2010-10-15 22:39
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:3 
回复 6楼 TGM316750432
优先级是一样的情况下  运算符 是有执行循序的(左到右 或是 右到左)
所以你要理解 *(指针运算符), 和++  这两个 的结合性是 怎样的。

后 就是 理解 s.top++   和 ++s.top   有什么区别 再是 前面带与 * 相结合的情况

1. *和++ 二者 的优先级是一样的(c语言是如此 相信c++也应该是 因为 是向下兼容的)
2. 二者都是自右到左所以1.* s.top ++和* ++ s.top都是先做 ++ 的 所以做完这两个操作后
    加的都只是地址值 然后 * 解引用 所以 不可能是你的那个变量值自增1 ,它增加的只是变量地址的值
3.然后 理解 前++ (++s.top) 和 后++ (s.top++),前++ 可以理解成对本条语句的变量(自增变量)值有增加,
    后++ 可以理解成对本条语句的变量值(自增变量)没有影响。
    来个列子:
        int i = 1;
        i++; 此条语句中的i 为1(本条语句)
        cout << i<< endl;此时i 为2 (下条语句)

        int j = 1;
        ++j;j为2(本条语句)
        cout << j<<endl; (下条语句)
4.最后要理解的 是 语句 的定义。
        *s.top++; 是一条语句;
        *++s.top; 是一条语句;
2010-10-15 23:49
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
欢迎指正
2010-10-15 23:51
快速回复:*和++的问题~~~
数据加载中...
 
   



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

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