にゃあ

printfのムコウを見た日

printfの%u(引数を整数として扱い、符号無しの 10 進数として表現)に小数を含む数値を入れると丸められたり、文字列を入れようとすると0になったりするのは知ってましたが、負の値を入れると42億9496万...なんというべらぼうにでかい数字とであうことになるとは知りませんでした。負の数は0にしてくれても良さそうなものですが。

for ( $i = 0 ; $i >= -10 ; $i-- ) {
    printf($i.'を%%uに代入すると%uになっちゃいます。<br />', $i);
}

実行結果

0を%uに代入すると0になっちゃいます。
-1を%uに代入すると4294967295になっちゃいます。
-2を%uに代入すると4294967294になっちゃいます。
-3を%uに代入すると4294967293になっちゃいます。
-4を%uに代入すると4294967292になっちゃいます。
-5を%uに代入すると4294967291になっちゃいます。
-6を%uに代入すると4294967290になっちゃいます。
-7を%uに代入すると4294967289になっちゃいます。
-8を%uに代入すると4294967288になっちゃいます。
-9を%uに代入すると4294967287になっちゃいます。
-10を%uに代入すると4294967286になっちゃいます。

4294967296が32ビットで切りが良いので、きっとPHPの限界から差を求める仕様になってるんだと思われます。


コメント&トラバ

トラックバックを送る

無関係なスパムのトラックバックを防止するため、リンク先で本サイト(suin.asia)への言及が確認されないトラックバックは破棄しています。

トラバURL : http://suin.asia/trackback/6

コメントを書く

お名前* URL
本文*
合い言葉* ←「akjotiotio」と入力して下さい。
* この記事の話題と関係ないコメントはどんな内容でも削除します。(移動できないので)

トラックバック

トラックバックがないのはさみしいにゃん…。

コメント

コメントはないです。誰かコメント書いてよぅ…。

Author

Submenu

Recent Entries

XOOPS Cube Dev Ring

氷川 XOOPS Module 開発室

Recent Comments

Recent Trackbacks

facebookいいね