[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[WitchTech 00782] Re: ビットシフトに関して
- Subject: [WitchTech 00782] Re: ビットシフトに関して
- From: "masa" <matz@tkd.att.ne.jp>
- Date: Mon, 9 Apr 2001 15:09:15 +0900
はじめまして。松本です。
# たかひろさんは混乱しているようですし、(同じことの繰り返し
# になるので)これ以上フォローがないかもしれませんから
# ちょっとだけコメントします。
> >普通はこんな感じのコードになりますかね.
> >char str[16] ;
> >sprintf(str, "%d", n) ;
> >text_put_string(x, y, str) ;
> そう!!そいうふうにやった。
> う〜ん、自分がタコっている部分は、別のところっすね〜。
長久さんやこむらさんが指摘されているように
おかしいのは、text_put_stringの使い方そのものです。
# nearやfar以前の問題だと思います。
text_put_stringに渡すのはポインタであって、それ以外のデータを渡しても
意味をなしません。
(C++Builder等のVCLなどでは整数値を渡しても自動的に変換してくれたり
するものもありますが、text_put_stringはそうではありません)
どうしても整数値をtext_put_stringに渡したいのであれば、上のサンプルのように
sprintf(str, "%d", n)などとする必要があります。
※「表示したい文字列が入っているメモリの先頭のアドレス」を渡すんです。
整数を渡したら、無理矢理アドレスとして解釈してしまいますよ。
> でも、sprintf()で、「sprintf(str, "%d", n) ;」のように使われていますが、
> printf()では printf("%d\n", str);
> だと思うのですが、ちょっと関数の引数の並びがちょっと違うんでしょうか?
sprintfについてちょっと調べればわかるとは思いますが、"%d"より後ろの値を
""内の指示に従ってstrに書き込むのです。
「%d」はわかりますか?上の場合、例えばn=12ならstrの中身は '1' '2' '\0'の
3つになります。
printfは標準出力への書き出しをすることになっているので、sprintfの場合の最初
の引数が
必要ない(書いてはいけない)だけで、順番がおかしいわけではありません。
> text_put_string(x, y, &str);
> ってな感じで、キャラクター変数を渡す場合は、アドレスを渡すんですね?
「C++から」とのことですが、ポインタのあたりは理解されていますか?
WWの関数リファレンスをみればわかる程度にはCを習得されることをお勧めします。
では、がんばってください。
--
Matsumoto.
ML Archives