- 締切済み
C言語の型変換について
short int 型をunsigned char型に変換する方法をおしえてください
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- saijyo_739
- ベストアンサー率53% (119/222)
変換できない値の場合にどうしたいのかでやり方が変わります。 汎用的には変換できません例外として報告するようにするのかな。 変換元のshort intで値が0~255の時は問題なく変換できますが、他の場合にはどう処理するかを決める必要があります。
- jacta
- ベストアンサー率26% (845/3158)
単にキャストするだけです。 short int x = -123; (unsigned char)x; あるいは、unsigned char型の変数に代入するような場合は、暗黙的に変換されます。 short int x = -123; unsigned char y; y = x; 符号付き整数型から符号無し整数型に変換する場合、変換前の値を変換後の型で表現できない場合は、変換後の型の最大値+1を法とする剰余になります。
- kmee
- ベストアンサー率55% (1857/3366)
完全に変換する方法はありません。 最近主流の32bit用C言語では、shortは16bit、unsigned charは8bitが使われています。 Cの規格に照しあわせても、shortはchar以上のビット数であることが決められています。「以上」なので同じビット数でもいいのですが、多くの処理系ではcharより大きいと考えた方がよいでしょう。 また、shortには負の値がありますが、unsigned charには負の値はありません。 以上から、shortで表現できる値には、unsigned charでは表現できない値が存在することになります。 そのため、値の取り得る範囲であるとか、足りない精度をどう補うとかいった条件が付きます。 また、これとは別に、ファイル等への入出力で、16bit整数を2バイトで対応するケースがあります。 あなたがやりたい変換はどちらなのでしょうか?