From: matz@... (Yukihiro Matsumoto) Date: 1998-03-09T16:49:20+09:00 Subject: [ruby-dev:1619] Re: printf "%x", -1 まつもと ゆきひろです In message "[ruby-dev:1618] printf "%x", -1" on 98/03/09, WATANABE Hirofumi writes: |わたなべです. | |printf "%x", -1 が "..f" になるのはなぜ? |sprintf.c を見るとたしかにこうなるように意図して書いてあるよ |うに思えるし. Bignum のことを考えてずっと f が続いてるよとい |う意味かな? そういう意味です.もうちょっとましな表現は無いのかって気にな りますが,思い付きませんでした. |それはともかく printf "%08x", -1 は変です("..000..f" になる). しまった. |あと |% ruby -e 'printf "%x\n", -53732505' |..f8cc1b67 |% printf "%x\n" -53732505 |fccc1b67 |となるからこれもちょっと変. そうですね,これもバグです. diff -u -1 -r1.1.1.2.2.2 sprintf.c --- sprintf.c 1998/02/10 08:44:05 1.1.1.2.2.2 +++ sprintf.c 1998/03/09 07:48:48 @@ -30,6 +30,6 @@ case 'c': - *t = '8'; + *t = '4'; break; case 'd': - *t = '9'; + *t = '5'; break; @@ -420,2 +420,3 @@ if (flags & FZERO) d = '0'; + if (s[0] == '.') d = '.'; CHECK(n);