昨晚顿开的茅塞……
屈超(沙滩凉鞋) 发表于 2006 年 2月 28 日 13 时 30 分
注:真的不是“茅厕”……
取这个抬头真麻烦……
NND……
昨晚大叔研究 C 语言……
本想找出“ELSE IF”和“ELSEIF”的真正意义差别……
(因为实际使用效果是没有差别的……)
结果发现了一个以前从未注意过的问题:
“逻辑表运算符的优先次序 & 表达式的执行顺序”……
这两个问题综合到一起……
可以写出优美简洁的程式……
比如判断闰年:
- $year = 1985;
- if ((!($year % 4) && $year % 100) || !($year % 400)) {
- echo "$year is a leap year.";
- } else {
- echo "$year is not a leap year.";
- }
得到的输出是:1985 is not a leap year.
(用脚趾头也能算出来吧……)
至于为何说程序很优美简洁呢?
大叔来分析一下:
首先,我们确定一点……
闰年是少于一般年份的……
所以程序应该倾向于“排除”……
其次,我们看 “||” 符号……
根据其特性……
当左边的“!($year % 4) && $year % 100”值为 True 时……
就用不着做右边“$year % 400”的真值判断……
(显然,能被 4 整除且不能被 100 整除的年份比能被400整除的年份要多得多……
这样可以最大限度的避免执行右边的真值判断……)
再次,再看左边的“&&”符号……
根据其特性……
当只有当左边的“!($year % 4)”为 True 时……
才需要做右边“$year % 100”的真值判断……
(再显然,能被 4 整除的年份要比不能被 100 整除的年份少得多……)
这样也可以最大限度得避执行右边的真值判断……
如此这般那么以后……
大伙是否懂了呢?
如果哪位高人有不同看法……
麻烦面刺寡人……
谢鸟……


Celia 的评论内容:
2006 年 7月 7 日 1 时 41 分
冷冷清清呀…
看来至今能超越沙沙滴高手还冒出现呀~
对咯~
沙沙,你有没有去过“人事部蛋蛋 ”那里玩啊??
沙滩凉鞋 的评论内容:
2006 年 7月 10 日 7 时 08 分
是不是想问我要邀请名额啊?
我是不会给你的!!!
哼……
Celia 的评论内容:
2006 年 7月 11 日 0 时 08 分
切!!
我啊,就是太清楚你酱紫的性格了!
早知道你要拽下子~~
了不起啊,
一游戏痴迷者的论坛而已!
你把它当天堂那你上个够咯…
Celia 的评论内容:
2006 年 7月 11 日 0 时 10 分
哎呀,好了咯!
知道你最近火气重~~
我不惹你!
沙滩凉鞋 的评论内容:
2006 年 7月 11 日 4 时 37 分
已经惹到我的怎么办………………
另外你是不是把我拉到黑名单了?
小心我发飙喔……
Celia 的评论内容:
2006 年 7月 12 日 16 时 05 分
555555555
我错了….