困难阅读的代码
两行如何分析这些代码以下两行?困难阅读的代码
w += /* 28 + */ y % 4 == 0 && (y % 100 || y % 400 ==0);
和
w += 30 + (i % 2^i >= 8);
下面是如何分析它
int main(){
int w = 0;
int y = 400;
w += /* 28 + */ y % 4 == 0 && (y % 100 || y % 400 ==0);
int t1 = y % 100;
int t2 = y % 400;
int t3 = t1 | t2;
bool t4 = (y % 4);
int w1 = t3 & t4;
}
注意,t1和t2,可以以任意顺序进行评估 T3将T1和T2后进行评估 T4可以T1或T2
之前评估这需要
运营商关联
熟悉运算符优先级
序列指出
离开另一个也被类似的路线分析
某种考虑闰年一年的天数计算的?
第一个查找闰年,并增加了1到W,如果它是。 (每四个全年除那些由100整除的人除外被400整除)
第二个查找月是31天。 (除个月超过8个,其中重复1个月更大的每一个每个月)。
谁写这段代码只是想混乱和幻想。你应该重写它更可读。
+1完全同意。 – 2010-08-22 13:30:06
它看起来像第二个实际上是试图让在一个月的天数(W将在所有其他月份,包括二月增加30)。 – 2010-08-22 15:35:11
似乎有一种模式,大量的C/C++程序都是用这样的方式很复杂的。这在行业中通常如此吗? – user297850 2010-08-22 16:03:04
第一个,似乎都与公历calandar东西。
究竟什么是你的问题与那些? – 2010-08-22 13:25:10
如果是作业,请将其标记为家庭作业。 – relet 2010-08-22 13:26:39
提示:忽略那些'/ * * /'块 – 2010-08-22 13:27:51