アカウント名:
パスワード:
year = ORIGINYEAR; /* = 1980 */ while (days > (IsLeapYear(year) ? 366 : 365)){ days -= IsLeapYear(year) ? 366 : 365; year += 1;}
year = ORIGINYEAR; /* = 1980 */year_days = IsLeapYear(year) ? 366 : 365;while (days > year_days){ days -= year_days; year += 1; year_days = IsLeapYear(year) ? 366 : 365;}
year = ORIGINYEAR; /* = 1980 */while (1){ if (IsLeapYear(year)) { if (days <= 366) break; days -= 366; } else { if (days <= 365) break; days -= 365; } year += 1;}
for (year = ORIGINYEAR; ; year++){ if (IsLeapYear(year)) { if (days <= 366) break; days -= 366; } else { if (days <= 365) break; days -= 365; }}
for (year = ORIGINYEAR;; year++) { year_days = IsLeapYear(year)? 366 : 365; if (days <= year_days) break; days -= year_days;}
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常
原因はクロックドライバ (スコア:5, 参考になる)
閏年の判断が間違ってたわけじゃなくて、1980年1月1日からの日数を閏年を考慮して年初からの日数に直すところで無限ループに入っていたという…
http://www.zuneboards.com/forums/zune-news/38143-cause-zune-30-leapyea... [zuneboards.com]
Re: (スコア:0)
Re: (スコア:0)
Re: (スコア:1, 参考になる)
この程度なら余裕で見通せるだろうが、基本的に同一の記述が複数にあると潜在バグの元になる。
過去の遺産的なつぎはぎ修正のプログラムは、たいていこんなものが散見されて、コピペミスと思われるバグがあったりするよ。
Re: (スコア:0)
Re: (スコア:0)
Re: (スコア:1, 興味深い)
Re: (スコア:0)
year_days = IsLeapYear(year) ? 366 : 365;
をうっかり、
year_days = IsLeapYear(year) ? 365 : 366;
と、しちゃったりとか、そういうトラブルを未然に防げる、って事だと思う。
Re: (スコア:0)
Re:原因はクロックドライバ (スコア:1, おもしろおかしい)
保守性を考えた場合、底辺に合わせるしかありません。
Re:原因はクロックドライバ (スコア:2, おもしろおかしい)
管理側の発想としてはとてもよく理解できますけど。