ToDo:
printf("%lld\n", (long long)020000000000); printf("%lld\n", (long long)0x80000000); printf("%lld\n", (long long)-2147483648); printf("%lld\n", (long long)020000000001); printf("%lld\n", (long long)0x80000001); printf("%lld\n", (long long)-2147483649);
の結果を言える人はえらいと思う。 でまぁこれ関係は標準ちゃんとあるのかなぁ…
(02:38)
↑の問題は標準とか調べるのかったるいので適当にごまかした。 でも本当は INT_MIN とかとかかわるから きちんと調べた方がいいなー。
あとはまぁ少しで tcc -run tcc -run tcctest.c が動くはず。 現に tcc -run tcc -run tcc.c は動いてるし。
(02:53)
前 | 2009年 4月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
ループ回数の定数がsigned intをオーバーフローしているという、その挙動に依存してるコードに遭遇したことがあって、調べたことがあります。標準で決まってますね。
C89とC99で挙動が違うので必要なら両方確認したほうがよいです。
そのループを見たときは絶対正しく動かないとまわりの人に主張したのですが、正しく動いてしかも標準で定義されている挙動だったので、それ以来僕は「Cが使えます」と言わないようにしてます…
となると自信を持って使える言語は brainfuck くらいですね…
情報ありがとうございます。挙動違うのは厄介ですね…今度見てみます。
brainfuckはワード長が決まってたか決まってなかったかあやふやなので僕はbrainfuckも使えないですね。
あと、Cの仕様を調べるときは
http://www.amazon.co.jp/dp/4434124234/
これが便利です。
C89とC99とC++に含まれているCの違いまで解説してあるので、仕様を読むよりこっちのほうが良いです。
おお、良さげな本の紹介ありがとうございます。ですが明日から出張なので買うの忘れそうだ…