int
の代わりにshort int
をわざわざ使用する必要がありますか?何か便利な違いはありますか?落とし穴はありますか?
ベンが言ったこと。比較が行われるたびにすべてのレジスタが上位ビットを取り除く必要があるため、実際には効率の低いコードを作成します。大量のメモリがあるためにメモリを節約する必要がない限り、ネイティブの整数サイズを使用してください。それがint
の目的です。
編集:constについてのあなたのサブ質問さえ見ませんでした。組み込み型(int、float)でconstを使用することは無意味ですが、ポインター/参照は、該当する場合は常にconstである必要があります。クラスメソッドについても同じです。
膨大な数の値でメモリを節約したり、他のコードで必要な特定のメモリレイアウトに準拠したりするなど、本当に正当な理由がない限り、short
を気にしないでください。
多くの異なる整数型を使用すると、複雑さが増し、ラップアラウンドのバグが発生する可能性があります。
最近のコンピューターでは、不必要な非効率性ももたらす可能性があります。
できる限りconst
をたっぷりと振りかけます。
const
は変更される可能性のあるものを制限し、コードを理解しやすくします。このビースティーは動かないので、無視して、より有用で関連性のあるものに向けて考えることができます。
ただし、正式な引数のトップレベルのconst
は、慣例により省略されています。これは、おそらく、ゲインが追加された冗長性を上回るのに十分でないためです。
また、関数の純粋な宣言では、引数のトップレベルconst
はコンパイラによって単に無視されます。しかし一方で、純粋な宣言を定義と比較する場合、他のいくつかのツールはそれらを無視するほど賢くないかもしれません。ある人は、comp.lang.c ++ Usenetグループの問題に関する以前の議論でそれを引用しました。したがって、ツールチェーンにある程度依存しますが、幸いなことに、これらのconst
sに重要な意味を持つツールを使用したことはありません。
乾杯&hth。、
関数の引数には絶対にありません。 shortとintを区別する呼び出し規約はほとんどありません。巨大な配列を作成している場合、データがshort
に収まる場合はshort
を使用して、メモリを節約し、キャッシュの効率を高めることができます。
質問は技術的に不正な形式です「short int
を使用する必要がありますか?」。唯一の良い答えは、「わからない、何を達成しようとしているのか」です。
しかし、いくつかのシナリオを考えてみましょう。
符号付き整数の範囲は次のとおりです。
signed char
—-2⁷–2⁷-1short
—-2¹⁵–2¹⁵-1int
—-2¹⁵–2¹⁵-1long
—-2³¹–2³¹-1long long
—-2⁶³–2⁶³-1ここで、これらは保証された範囲であり、特定の実装ではより大きくなる可能性があり、多くの場合、そうであることに注意する必要があります。また、前の範囲を次の範囲より大きくすることはできませんが、同じにすることもできます。
short
とint
の保証範囲は実際には同じであることにすぐに気付くでしょう。これはあなたにそれを使う動機をほとんど与えません。この状況でshort
を使用する唯一の理由は、他のコーダーに値が大きすぎないというヒントを与えることですが、これはコメントを介して行うことができます。
ただし、すべての潜在的な値を-128〜127の範囲に収めることができることがわかっている場合は、signed char
を使用することは理にかなっています。
この場合、メモリ使用量を最小限に抑えようとするのはかなり悪い立場にあり、おそらく少なくともint
を使用する必要があります。最小範囲はshort
と同じですが、多くのプラットフォームではそれよりも大きい場合があり、これが役に立ちます。
しかし、より大きな問題は、範囲がわからない値で動作するソフトウェアを作成しようとしていることです。おそらく、コーディングを開始する前(要件が作成されていたとき)に何か問題が発生しました。
境界にどれだけ近いか自問してみてください。 -1000から+1000になり、-1500 – 1500に変わる可能性があるものについて話している場合は、必ずshort
を使用してください。特定のアーキテクチャが価値を埋める可能性があります。つまり、スペースを節約することはできませんが、何も失うことはありません。ただし、現在-14000〜14000であり、予測できないほど大きくなる可能性がある(おそらくそれは何らかの経済的価値がある)数量を扱っている場合は、int
に切り替えるのではなく、すぐにlong
に移動してください。あなたはいくらかの記憶を失うでしょう、しかしあなた自身にこれらのロールオーバーバグを捕まえる多くの頭痛を救うでしょう。
short vs int-データがshortに収まる場合は、shortを使用します。メモリを節約します。読者が変数が収まる可能性のあるデータの量を簡単に把握できるようにします。
constの使用-優れたプログラミング手法。データをconstにする必要がある場合は、constにします。誰かがあなたのコードを読むとき、それは非常に役に立ちます。