From: nobu.nakada@... Date: 2001-12-15T14:08:09+09:00 Subject: [ruby-dev:15454] Re: Time#utcoff なかだです。 At Sat, 15 Dec 2001 13:44:33 +0900, Tanaka Akira wrote: > ただ、((time_t)-1L << 31) でも実用上問題ないとは思うんですが、 > Standard C を調べて重箱の隅をつつくのが面白いので、つい指摘してしまう > と、signd long であるところの -1L を time_t にキャストするときに > time_t が unsigned であると implementation defined な振舞いになります。 > > なので、(~(time_t)0 << 31) のほうがほんのちょっとかすかにいいんではな > いかと思います。ただ、これも 2の補数が前提ですが... うぅむ、 一応それも考えたんですが、やっぱり五十歩百歩かなと。 > -2147483648 が表現可能ならそれを設定して、表現不能ならなにか他の値を設 > 定するということを(規格のみによる)ポータビリティを保ったまま実現するこ > とは可能なんでしょうかねぇ? うーん、規格書は持ってないんですが、(-(time_t)1 << 31)ってのも ダメでしたっけ。unsingedに対する-自体がダメかな。 あるいは、undefinedでないのならこんなのとか。 if ((time_t)-1L >= (time_t)0) return 1; -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦