• 締切済み

C言語の型変換について

short int 型をunsigned char型に変換する方法をおしえてください

みんなの回答

回答No.3

変換できない値の場合にどうしたいのかでやり方が変わります。 汎用的には変換できません例外として報告するようにするのかな。 変換元のshort intで値が0~255の時は問題なく変換できますが、他の場合にはどう処理するかを決める必要があります。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

単にキャストするだけです。 short int x = -123; (unsigned char)x; あるいは、unsigned char型の変数に代入するような場合は、暗黙的に変換されます。 short int x = -123; unsigned char y; y = x; 符号付き整数型から符号無し整数型に変換する場合、変換前の値を変換後の型で表現できない場合は、変換後の型の最大値+1を法とする剰余になります。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

完全に変換する方法はありません。 最近主流の32bit用C言語では、shortは16bit、unsigned charは8bitが使われています。 Cの規格に照しあわせても、shortはchar以上のビット数であることが決められています。「以上」なので同じビット数でもいいのですが、多くの処理系ではcharより大きいと考えた方がよいでしょう。 また、shortには負の値がありますが、unsigned charには負の値はありません。 以上から、shortで表現できる値には、unsigned charでは表現できない値が存在することになります。 そのため、値の取り得る範囲であるとか、足りない精度をどう補うとかいった条件が付きます。 また、これとは別に、ファイル等への入出力で、16bit整数を2バイトで対応するケースがあります。 あなたがやりたい変換はどちらなのでしょうか?

関連するQ&A