注:真的不是“茅厕”……
取这个抬头真麻烦……
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 整除的年份少得多……)
这样也可以最大限度得避执行右边的真值判断……
如此这般那么以后……
大伙是否懂了呢?
如果哪位高人有不同看法……
麻烦面刺寡人……
谢鸟……