- ベストアンサー
sprintf_sなどでLONGLONG型を扱うと・・
sprintf_sで幾つかの変数を文字列として結合させていて、 ふとLONGLONG型を扱った時、1つ後ろ側の%dの数値がおかしくなる事に気付きました。 (long)とキャストしてみると、1つ後ろ側の数値も一応出るのですが、変になっていました。 (long)とキャストしたLONGLONG型を、sprintf_sの最後尾の%dに当てれば正常に動作しますし、 最初から外の変数でlongにキャストしておけば問題ない事もわかるのですが、 なぜ後ろの%dが影響を受けるのでしょうか? if判定も正しく通過してくれないみたいですし、 LONGLONG型が一応規格外なだけな話だとは思うのですが、 4バイトを超える変数は全てこういうものだったりするのでしょうか。 何か参考になりそうなURLなどを紹介して頂けるだけでも幸いです。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
long longを%dで変換させたということでしょうか 8バイトの変数が格納されたスタックから4バイトしか取り出さないので当然変になります %lld で変換しましょう
その他の回答 (1)
- ICE_FALCON
- ベストアンサー率56% (63/111)
回答No.1
プレフィックスを指定しましょう。
質問者
お礼
ご回答ありがとうございました。
お礼
%lldというのが有ったのですね。 後ろまで影響を受けるのは・・謎ですが、 ありがとうございました~。