• 締切済み

int→unsigned int キャスト

int test01; unsigned test02; の場合、test02にtest01の値を代入したい場合どうすればよいでしょうか? 型は変更できません。 キャストして代入しても大丈夫でしょうか?

みんなの回答

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

値が負の場合、元の値が保持されるわけはありませんが、単に代入するだけであれば... test02 = test1; で大丈夫です。 負の場合は2の補数が入ります(符号付き整数の内部表現が1の補数や符号ビットと絶対値であったとしても)。

  • semisemi
  • ベストアンサー率72% (8/11)
回答No.2

intが何バイトの環境かわかりませんが、 32bitの環境なら、 int型が -2147483648~2147483647 unsigned int型が 0~4294967295 だと思います。 なので、No1のTacosanさんの仰るよおに、 test01 >= 0 なら、なんの問題もなく代入できます。 例: test02 = test01 問題は、test01 < 0 だった場合です。 unsigned int型は当然ですが負の値を扱えないので、何らかの条件分岐をしてやる必要があります。 if (test01 < 0) { //test01が負なので、何らかの対応処理をする。例えば↓ test02 = 0; } else { //test01が正 test02 = test01; } みたいな。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

0以上の値であることが分かっているならキャストすら不要. 負の値が入っているとしたら, 何を期待しているのか全く不明なので「大丈夫でしょうか? 」と聞かれても答えようがない.