• ベストアンサー

unsignedの使い分け

符号付き変数はバグを起こしやすいようですが、 負数を扱わない変数を全てunsignedにしていたら unsignedだらけになってしまう時がありますし、 実際、やたらにunsignedを付けるのは初心者だと言う人もいます。 みなさんはどのように使い分けているのでしょうか。 または、一般的にはどのように使い分けられていることが多いのでしょうか。 それから、CとC++では使い分けの傾向が違うのでしょうか。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

unsigned でも signed でも、実際のメモリ上の値は 同じなので、目印程度に使ってますね。 (unsigned)a++; < こうすれば、最初にsignedで作ったかはもはや、問わないわけで。 そこは、CでもC++でも同じだと、思ってます。 工業用のSDKでは、基礎ヘッダー内で typedef unsigned long Uint32; typedef signed long Sint32; typedef unsigned short Uint16; typedef signed short Sint16; typedef unsigned char Uint8; typedef signed char Sint8; などと、符号と、メモリ上の長さを型として宣言していることも多いですよ。 (Hitachi系のSDKに多い書き方) その他外国系だと uintなども見ます。 >やたらにunsignedを付けるのは初心者だと言う人もいます。 なぜ付いているかを理解できないのも、初心者ですよ(w) 必要なら使うのですし! ということで、私の回答ですが、 やってみて、ダメならUnsignedも使うし。 特にこだわらない事。 ではないかと、思います。

ppk37
質問者

お礼

そうですね、まだ符号の有無の影響をよく把握できていないので、 あまりこだわり過ぎず、経験を積みながら理解しようと思います。 ありがとうございます。

その他の回答 (2)

  • precog
  • ベストアンサー率22% (966/4314)
回答No.2

unsignedは引き算の途中経過に注意が必要なので、通常は付けません。 文字などはコーディング規約で縛って、マクロ定義するなどして処理方法を統一します。 バグになる理由が良くわからないですけど、signedでダメな人は不注意、もしくはきちんと理解してないってことだからunsignedもダメかと。

ppk37
質問者

お礼

たしかにどちらかでダメならもう一方でもダメかもしれないですね。 ありがとうございます。

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

>>みなさんはどのように使い分けているのでしょうか。 文字情報を格納するときとか、ビット情報的に扱うとき、unsigned を使っていました。 通常の数値情報の場合は、unsignedは使いません。 >>それから、CとC++では使い分けの傾向が違うのでしょうか。 私は、Cと同じ考え方で作っていました。

ppk37
質問者

お礼

参考にさせていただきます。ありがとうございます。

関連するQ&A