時計坂一刻館三号室

昨晚顿开的茅塞……

屈超(沙滩凉鞋) 发表于 2006 年 2月 28 日 13 时 30 分

注:真的不是“茅厕”……
取这个抬头真麻烦……
NND……

昨晚大叔研究 C 语言……
本想找出“ELSE IF”和“ELSEIF”的真正意义差别……
(因为实际使用效果是没有差别的……)
结果发现了一个以前从未注意过的问题:
“逻辑表运算符的优先次序 & 表达式的执行顺序”……

这两个问题综合到一起……
可以写出优美简洁的程式……
比如判断闰年:

  1. $year = 1985;
  2. if ((!($year % 4) && $year % 100) || !($year % 400)) {
  3. echo "$year is a leap year.";
  4. } else {
  5. echo "$year is not a leap year.";
  6. }

得到的输出是:1985 is not a leap year.
(用脚趾头也能算出来吧……)
至于为何说程序很优美简洁呢?
大叔来分析一下:

首先,我们确定一点……
闰年是少于一般年份的……
所以程序应该倾向于“排除”……

其次,我们看 “||” 符号……
根据其特性……
当左边的“!($year % 4) && $year % 100”值为 True 时……
就用不着做右边“$year % 400”的真值判断……
(显然,能被 4 整除且不能被 100 整除的年份比能被400整除的年份要多得多……
这样可以最大限度的避免执行右边的真值判断……)

再次,再看左边的“&&”符号……
根据其特性……
当只有当左边的“!($year % 4)”为 True 时……
才需要做右边“$year % 100”的真值判断……
(再显然,能被 4 整除的年份要比不能被 100 整除的年份少得多……)
这样也可以最大限度得避执行右边的真值判断……

如此这般那么以后……
大伙是否懂了呢?

如果哪位高人有不同看法……
麻烦面刺寡人……
谢鸟……

读取中……

6 则评论

  1. 1

    Celia 的评论内容:

    2006 年 7月 7 日 1 时 41 分

    冷冷清清呀…
    看来至今能超越沙沙滴高手还冒出现呀~

    对咯~
    沙沙,你有没有去过“人事部蛋蛋 ”那里玩啊??

  2. <a href='http://www.QuChao.com' rel='external nofollow'>沙滩凉鞋</a>

    沙滩凉鞋 的评论内容:

    2006 年 7月 10 日 7 时 08 分

    是不是想问我要邀请名额啊?
    我是不会给你的!!!
    哼……

  3. 2

    Celia 的评论内容:

    2006 年 7月 11 日 0 时 08 分

    切!!
    我啊,就是太清楚你酱紫的性格了!
    早知道你要拽下子~~
    了不起啊,
    一游戏痴迷者的论坛而已!
    你把它当天堂那你上个够咯…

  4. 3

    Celia 的评论内容:

    2006 年 7月 11 日 0 时 10 分

    哎呀,好了咯!
    知道你最近火气重~~

    我不惹你!

  5. <a href='http://www.QuChao.com' rel='external nofollow'>沙滩凉鞋</a>

    沙滩凉鞋 的评论内容:

    2006 年 7月 11 日 4 时 37 分

    已经惹到我的怎么办………………
    另外你是不是把我拉到黑名单了?
    小心我发飙喔……

  6. 4

    Celia 的评论内容:

    2006 年 7月 12 日 16 时 05 分

    555555555
    我错了….

发表评论

可用标签:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

播放器加载中……
读取中……
图书数据加载中……
读取中……
剧集数据加载中……
读取中……
专辑数据加载中……
读取中……
2008 Firefox+ Summit
歌曲数据加载中……
读取中……
通讯方式加载中……
读取中……
QR Code 加载中……
读取中……