アカウント名:
パスワード:
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;}
for (year = ORIGINYEAR;; year++) { if (IsLeapYear(year)) year_days = 366; else year_days = 365; if (days <= year_days) break; days -= year_days;}
if (is_xxx) { /* Nothing to do */ } else { /* Procedure to do */ }
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
身近な人の偉大さは半減する -- あるアレゲ人
原因はクロックドライバ (スコア:5, 参考になる)
閏年の判断が間違ってたわけじゃなくて、1980年1月1日からの日数を閏年を考慮して年初からの日数に直すところで無限ループに入っていたという…
http://www.zuneboards.com/forums/zune-news/38143-cause-zune-30-leapyea... [zuneboards.com]
Re:原因はクロックドライバ (スコア:1, 興味深い)
・年は日数が365以下になるまで365が何回引けたか数えればいいかな
・残った日数は次の処理で使えるしね
・あれ? うるう年の時は1年は366日だよ!
・あぶないあぶない。うるう年の時は366を引くようにして、と
・(同僚) ねえ。この処理だと days が減りすぎちゃう時がない?
・あ、そうだね。じゃあ、引き過ぎにならないようにif文で確認して、と
・ありがとう! これで完璧だよ!
で、テストしてない、と……
Re:原因はクロックドライバ (スコア:1, 興味深い)
参照ドライバって言い方します?
リファレンスドライバのことだと思うんですが、あえて言うなら純正ドライバ?基準ドライバ?
Re: (スコア:0)
組み込み系とそれ以外との文化の相違の問題である…のかどうかは存じません。
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: (スコア:0)
Re:原因はクロックドライバ (スコア:1, おもしろおかしい)
保守性を考えた場合、底辺に合わせるしかありません。
Re:原因はクロックドライバ (スコア:2, おもしろおかしい)
管理側の発想としてはとてもよく理解できますけど。
Re: (スコア:0)
Re: (スコア:0)
ってのはドライバということだとだめなんでしょうけど、
なぜに1980年からの通算日数から年内日数なのでしょう? RTCにはBCDで
月日が格納されるのがほとんどだと思うのですが。
epochが1980年?とググったらarcプロセッサのシステムで
採用しているみたいですね。
Re: (スコア:0)
微々たるものですが、ソフトウェアで十分なものをハードウェアでやるのは、どーかと思います。
Re:原因はクロックドライバ (スコア:1)
// 個人的にはコーディングスタンダード嫌いなID
from もなか
Re: (スコア:0)
> をうっかり、
バカをいいなさんな。 こういう奴がいるから とかいうわけのわからない書式が規約になったりする。勘弁してくれ。
組み込みチップではローカル変数は貴重である上にアクセスすると使うとペナルティがでかかったりするのだよ。
数多くのレジスタと大量のスタックと高速のメモリが当然だと考えないでくれたまへ。
Re: (スコア:0)
Re: (スコア:0)
Re: (スコア:0)
だから実機に近い環境で確認しろと・・・