K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[2] 祝! 新掲示板移行
投稿者:れぷ
2007/02/20 02:13:25

というわけで早速テストです。 変換指定子に「#」があるのを知りませんでした。_no #include <stdio.h> int main(void) { int hoge = 4095; printf("%#010x\n", hoge); return 0; } ただ、「0x」の大文字小文字変換もそのうしろの 変換指定子「x」依存なのがちょっと嫌かも。 もっとも普段からリテラルで0X00000FFFなどと書かないから 見慣れないというだけでしょうが・・・
[この投稿を含むスレッドを表示] [この投稿を削除]
[3] Re:祝! 新掲示板移行
投稿者:(ぱ)
2007/02/20 02:13:25

>というわけで早速テストです。 どうもです。 >変換指定子に「#」があるのを知りませんでした。_no この「_no」は文字化けか何かかと思って一瞬焦ってしまいました。 _| ̄|○ とか orz とかと同系列の1行AAですね。 > printf("%#010x\n", hoge); printfは自作インタプリタ向けに(微妙にサブセットの)実装を書いたことも ありますし、仕様は何度も読んでいるはずですが、フルに機能を使うことは まずないし、仕様だけ読んでも忘れるしで、私もやっぱり忘れてました(^^; x(またはX)に対する指定は、(ゼロでないときに限り)0x(または0X)を 付け加えるってだけで、あんまり役に立つとも思えませんし...
[この投稿を含むスレッドを表示] [この投稿を削除]
[4] Re:祝! 新掲示板移行
投稿者:れぷ
2007/02/20 02:13:25

>この「_no」は文字化けか何かかと思って一瞬焦ってしまいました。 >_| ̄|○ とか orz とかと同系列の1行AAですね。 ギャー。すいません。 変数_noのようなコードの断片みたいに見えますね。 最近、マイブーム(死語)なのですよコレ。 >printfは自作インタプリタ向けに(微妙にサブセットの)実装を書いたことも >ありますし、仕様は何度も読んでいるはずですが、フルに機能を使うことは >まずないし、仕様だけ読んでも忘れるしで、私もやっぱり忘れてました(^^; 自作インタプリタって凄いですね。 私だったら構文解析ルーチン作るだけで挫折しそうです。 忘れている、といえばshort型の変換指定子%hdとかもそうでした。 そういえば、先日の本多さんの絡みの話になりますが、 floatをprintf()に渡すと実引数double型へ変換されますけど、 整数型のほうはこのような格上げってないのでしょうか? # 変換指定子がhd, ld, lldなどフルにサポートされているからかも・・・ >x(またはX)に対する指定は、(ゼロでないときに限り)0x(または0X)を >付け加えるってだけで、あんまり役に立つとも思えませんし... そうですね。必要なら自分で書いても面倒ではないですね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[5] Re:祝! 新掲示板移行
投稿者:(ぱ)
2007/02/20 02:13:25

>そういえば、先日の本多さんの絡みの話になりますが、 >floatをprintf()に渡すと実引数double型へ変換されますけど、 >整数型のほうはこのような格上げってないのでしょうか? あります。intより小さい整数型は、可変長引数で渡されるときには無条件で intに格上げされています。 ># 変換指定子がhd, ld, lldなどフルにサポートされているからかも・・・ じゃあ変換指定子のhはなんなのか、ということですけど、規格によれば | 実引数は汎整数拡張に伴って拡張されている。その値を表示する前に | short int型又はunsigned short int型に戻す変換を行う。 だそうです。%hにでっかい値を渡しても、表示の前に小さくされる、ということですね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[8] Re:祝! 新掲示板移行
投稿者:れぷ
2007/02/20 02:13:25

>あります。intより小さい整数型は、可変長引数で渡されるときには無条件で >intに格上げされています。 なるほどー。そういう仕様になっていたのですね。 ご教授ありがとうございます。 C言語を憶えたての頃を思い直してみると ファイルダンプのときにchar型のデータを%02Xで表示すると 確かに符号拡張されてました。(処理系依存ですけど。) # ・・・答え聞いてから思い出すなって感じですね(;_;) >だそうです。%hにでっかい値を渡しても、表示の前に小さくされる shortとfloatは表示コストが余分にかかるんですね。 最近ではほとんど利用しない型なのですけど・・・
[この投稿を含むスレッドを表示] [この投稿を削除]
[9] shortとかfloatとか
投稿者:(ぱ)
2007/02/20 02:13:25

Subjectかえました。 >C言語を憶えたての頃を思い直してみると >ファイルダンプのときにchar型のデータを%02Xで表示すると >確かに符号拡張されてました。(処理系依存ですけど。) ># ・・・答え聞いてから思い出すなって感じですね(;_;) ていうかよくおぼえてますね (^^; しかし、私も「getchar()の戻り値はなぜintなんだろう?」とか 思ったことはあります。 >shortとfloatは表示コストが余分にかかるんですね。 >最近ではほとんど利用しない型なのですけど・・・ 結局のところ、Cでは、 ・整数型にはintを使え。 ・実数型にはdoubleを使え。 ・charは配列としてだけ使え。 と言ってしまってよいと思っています。 Javaだと、doubleをfloatに代入できず、かつ実数のリテラルがdoubleなので、 floatを使うのはさらに大変です。
[この投稿を含むスレッドを表示] [この投稿を削除]
[11] Re:shortとかfloatとか
投稿者:れぷ
2007/02/20 02:13:25

>Subjectかえました。 あ・・・気がつきませんですいません。 >ていうかよくおぼえてますね (^^; 私はロクでもないことのほうが良く憶えてたりします(^-^;) >しかし、私も「getchar()の戻り値はなぜintなんだろう?」とか >思ったことはあります。 あ、これは私も思いました。 EOFの理解に結構悩んだ記憶があります。 >結局のところ、Cでは、 > --- 中略 --- >と言ってしまってよいと思っています。 そうですね。それで困るプログラムは意外に少ないですし。 # 今はsizeof int = sizeof longも多いのでなおさら!? ただ金融システムの情報系だとlong doubleなどは 積極的に利用したいので必要に応じて、ですね。 # と、一応言っておきますです。観念を固定しちゃう方もいるので・・・ >Javaだと、doubleをfloatに代入できず、かつ実数のリテラルがdoubleなので、 >floatを使うのはさらに大変です。 あ、double → floatはダメなんですか。 ってことは↓ができないんですね。 float hoge = 1.0; やっぱり桁落ちしてしまうからなんでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[12] Re:shortとかfloatとか
投稿者:(ぱ)
2007/02/20 02:13:25

いったん返信を書いたのですが、preview画面で投稿された気になってたらしい… 掲示板作った本人が何やってるんだか。 >ただ金融システムの情報系だとlong doubleなどは >積極的に利用したいので必要に応じて、ですね。 ># と、一応言っておきますです。観念を固定しちゃう方もいるので・・・ 確かにそうですね。迂闊でした。失礼しました。 私は金融系のシステムには直接関わったことはないのですが、 たとえばCADなんかだとすごく精度が必要な気がしますが、全長5mの車を 1/100mm単位で刻んだとしてたかだか50万、金融系のシステムの方がずっと 高い精度が必要だ、ということを某所で聞いて納得した記憶があります。 32bit shortじゃちょっとした会社の年間売り上げも入りませんもんね。 >>Javaだと、doubleをfloatに代入できず、かつ実数のリテラルがdoubleなので、 >>floatを使うのはさらに大変です。 >あ、double → floatはダメなんですか。 >ってことは↓ができないんですね。 > >float hoge = 1.0; です。これは float hoge = 1.0f; のように書く必要があります。 ライブラリなんかがfloatを要求してると大変です。 >やっぱり桁落ちしてしまうからなんでしょうか? だと思います。 黙って代入するよりは、妥当な仕様だろうとは思うんですが。
[この投稿を含むスレッドを表示] [この投稿を削除]
[469] Re:祝! 新掲示板移行
投稿者:レス
2007/02/20 02:13:25

>というわけで早速テストです。 >変換指定子に「#」があるのを知りませんでした。_no > >#include <stdio.h> > >int main(void) { > int hoge = 4095; > printf("%#010x\n", hoge); > > return 0; >} > >ただ、「0x」の大文字小文字変換もそのうしろの >変換指定子「x」依存なのがちょっと嫌かも。 >もっとも普段からリテラルで0X00000FFFなどと書かないから >見慣れないというだけでしょうが・・・ レスの練習です
[この投稿を含むスレッドを表示] [この投稿を削除]
[471] Re:祝! 新掲示板移行
投稿者:(ぱ)
2007/02/20 02:13:25

>レスの練習です 練習の投稿ならテスト用掲示板 http://kmaebashi.com/bbs/list.php?boardid=testbbs の方でお願いします。 また、この掲示板では、HTMLソースの中に「REMOTEHOST_ID」という形で 投稿元のIPアドレスをハッシュした値を埋め込んでいるので、 同一人物が複数回投稿すると、ハンドル名を変えても、それが同一人物による 投稿であることが誰の目にもバレてしまうのでよろしく。
[この投稿を含むスレッドを表示] [この投稿を削除]