多くの場合、値は正であることが知られています。たとえば、TCP/UDPシーケンス番号は常に正の値です。 int
とunsigned int
はいずれも最大のsequence number
を格納するのに十分なほど大きいため、これらのタイプのいずれかを使用できます。値が正であることが分かっている場合、他にも多くの例があります。符号なしの値を処理していることがわかるたびに「符号なし」を使用する必要がありますか?
普通のsigned
タイプの容量で十分な場合(多くの場合はそれ以上の場合)、unsigned
タイプを使用する理由はありますか?
ので、個人的に、私は定期的なタイプを使用する傾向がある:私はUINT
のために余分なヘッダを含める必要はありません
int
はおそらくもう少し読みuint
またはunsigned int
- より
- など私はプログラムのどこかで余分なキャストを避けるでしょう
使用する理由unsigned
タイプ私は想像することができます:
- ヘルプコンパイラはより良いコードを生成しましたか?
- その変数を理解するために別のプログラマはバグの可能性(int型はUINTコンパイラに割り当てられている場合、たとえばおそらくコンパイル時にエラーが発生しますし、我々は我々が割り当て、その値が負でない確認する必要があります)
ここにいくつかの考えがあります:http://embeddedgurus.com/stack-overflow/2009/08/a-tutorial-on- signed-and-unsigned-integers/ – Morwenn
ありがとう、また私はその質問をちょうど今見つけたhttp://stackoverflow.com/questions/12225521/should-unsigned-ints-be-used-if-not-necessary?rq= 1 – javapowered
いいえ、 'unsigned'を使うことにはいくつかの議論があります - StroustrupはこれをC++プログラミング言語のどこかに渡すことを暗示しています - Lakosは彼の本の1つで退屈な章を書きました。問題の例:値がaとbの場合、 'abs(a - b)'はintでは直感的に動作する傾向がありますが、unsignedでは動作しません。標準の変換が静かに実行できることは注目に値するので、符号なしを使用して取得することを望むかもしれないチェックの種類は、とにかく動作しません。負の値は黙って大きくなり、その逆もあります。 –