- 締切済み
int→unsigned int キャスト
int test01; unsigned test02; の場合、test02にtest01の値を代入したい場合どうすればよいでしょうか? 型は変更できません。 キャストして代入しても大丈夫でしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- 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以上の値であることが分かっているならキャストすら不要. 負の値が入っているとしたら, 何を期待しているのか全く不明なので「大丈夫でしょうか? 」と聞かれても答えようがない.