| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1164 人关注过本帖
标题:转帖一篇博文:王垠:程序设计里的“小聪明”(1)
只看楼主 加入收藏
lxsjzbd
Rank: 4
来 自:河北省
等 级:业余侠客
帖 子:97
专家分:258
注 册:2012-3-31
收藏
得分:0 
我是这样理解的,i++和++i运算结束后,i都为i+1,不过i++和++i的表达式的值不同,
2013-04-01 09:39
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用lxsjzbd在2013-4-1 09:39:45的发言:

我是这样理解的,i++和++i运算结束后,i都为i+1,不过i++和++i的表达式的值不同,

你看j=i++这一表达式,该行执行完毕后,j是i变化前的值,而j=++i是等于i变化后的值,这两个算符的区别在这里。翻译如下:

j=i++
j=i;
i=i+1;


j=++i
i=i+1;
j=i;


这就是所谓的前加和后加,区别在i=i+1在前还在是后。只要你理解这个原理,心中默想编译器会做这种代码展开,就会明白,当编译器遇到诸如j=(i++)+(++i)这类语句时,它将会如何无所适从,事实上C标准并没有规定编译器遇到这种代码应该如何操作,各种编译器都有自己的处置权,这就是“未定义行为”,没有答案的——这里解释了为什么我要封禁这类问题的原因,任何试图解释这类问题的答案都是错的,不要问、不要答,更不要写出这种代码。

[ 本帖最后由 TonyDeng 于 2013-4-1 09:47 编辑 ]

授人以渔,不授人以鱼。
2013-04-01 09:42
lxsjzbd
Rank: 4
来 自:河北省
等 级:业余侠客
帖 子:97
专家分:258
注 册:2012-3-31
收藏
得分:0 
可是你赋值的是表达式(i++或++i)的值,不是i的值啊,好吧就这样吧
2013-04-01 09:45
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 6楼 azzbcc
这类代码写成如下那样更清晰:
程序代码:
for (i = 0; i < n; ++i)
{
    printf("%d\n", s[i]);
}


这样,循环是干什么的,一目了然,而像你那种写法,就要眼珠转一转才翻译出来。

授人以渔,不授人以鱼。
2013-04-01 09:55
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
++这个的观点我不能苟同
从汇编的角度上来看
i = i + 1
和i++执行的是不同的操作

++操作更有效率

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-01 13:38
信箱有效
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1102
专家分:4268
注 册:2012-6-19
收藏
得分:0 
以下是引用peach5460在2013-4-1 13:38:03的发言:

++这个的观点我不能苟同
从汇编的角度上来看
i = i + 1
和i++执行的是不同的操作
 
++操作更有效率
比如?
2013-04-01 14:08
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不需过于从底层考虑,留意博主说的,是从哲学角度来说应如何写代码,到底层如何高效,编译器或运行时会自己解决,程序员的思维放在机器的角度,是很古老过时的意识了。当代的系统,有很多程序员不能、不需控制的成份,集中精力在抽象级别上解决问题,比干涉具体动作要好。

授人以渔,不授人以鱼。
2013-04-02 19:07
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
ding
2013-04-02 20:29
wlllch
Rank: 2
等 级:论坛游民
帖 子:32
专家分:21
注 册:2013-3-28
收藏
得分:0 
什么东东来的

新手上路,说错不要见怪。
2013-04-02 20:37
快速回复:转帖一篇博文:王垠:程序设计里的“小聪明”(1)
数据加载中...
 
   



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

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