兩行如何分析這些代碼以下兩行?困難閱讀的代碼
w += /* 28 + */ y % 4 == 0 && (y % 100 || y % 400 ==0);
和
w += 30 + (i % 2^i >= 8);
兩行如何分析這些代碼以下兩行?困難閱讀的代碼
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