あなたの習慣について教えてください!!

int test01;
unsigned test02;

の場合、test02にtest01の値を代入したい場合どうすればよいでしょうか?

型は変更できません。

キャストして代入しても大丈夫でしょうか?

A 回答 (3件)

値が負の場合、元の値が保持されるわけはありませんが、単に代入するだけであれば...



test02 = test1;

で大丈夫です。
負の場合は2の補数が入ります(符号付き整数の内部表現が1の補数や符号ビットと絶対値であったとしても)。
    • good
    • 0

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;
}

みたいな。
    • good
    • 0

0以上の値であることが分かっているならキャストすら不要.



負の値が入っているとしたら, 何を期待しているのか全く不明なので「大丈夫でしょうか? 」と聞かれても答えようがない.
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報