size_tが無効であることを示すために人々は何を使用しますか? -1は機能せず、0は有効なサイズになります。size_tの値が無効です
答えて
おそらく((size_t)-1)
?
厳密に言えば、それはは有効なサイズですが、あなたはこの1つを持っていたら、あなたは他を必要とする可能性が高いじゃない;-)
C99のマルチバイト文字列関数のいくつかはこれを行います:異常状態を示すため '(size_t)( - 1)'や '(size_t)( - 2)'を返します。それは最適ではありませんが、実際には機能します。あなたの質問の理由がエラー処理の場合は、エラー変数へのポインタを渡す方が良いかもしれません(例えば、 '_Bool型のエラーフラグ、' int型のエラーコードまたは ' const char * ')を追加引数として使用します – Christoph
ええ、それは一般的なイディオムです。 '(time_t)-1'もよく見かけることがあります。 –
@ MichaelKrelin-hacker: '(time_t)-1'は少し異なります。標準では、現在の時刻を特定できない場合、time()によって返される値であることを具体的に示しています。 'time_t'はしばしば符号付きの型ですので、'(time_t)-1'は通常、エポックの1秒前です。 –
基本的にはできません。どんな価値を使用しても有効なものです。それが無効であることを示すフラグを渡す方が良い。
そして、何あなたはint
が無効であることを示すために行うのですか? -1はintの有効な値です。これらのタイプには、「無効な」値が指定されていません。違法な価値を表現するために特定の値を決めることができます(これは決してあなたの変数が表現する値では決してありませんが、それはあなた自身の定義であり、人々が一般的に使用するものではありません)。
私はこのように個人的には好きではありません。私は別の変数bool IsValid
を作成することを好みます。これは、そのsize_t変数の値が有効かどうかを示します。クラスを作成してカプセル化する方がよい場合もあります。
std :: stringについて言えば、size_tの無効な値はstd :: string :: nposです。 通常、size_tは符号なしであるため-1を使用しないでください。タイプ間の暗黙的な変換を行っているコンパイラで失敗した比較を得ることができます。
std :: stringsのnposは0XFFFFFFFFFFFFFFFFに設定されています。これは-1の2進数に等価です。また、unsigned size_tフィールドの最大許容値を評価します。
私のバージョンは次のとおりです。
#include <limits>
#define invalid_index std::numeric_limits<size_t>::max()
'std :: numeric_limits
- 1. gpgme_op_export_keys値が無効
- 2. java.time.DateTimeException:年の値が無効です(有効な値-999999999 - 999999999)
- 3. Winforms ComboBoxColumnの値が無効です
- 4. xml:要素の値が無効です
- 5. System.ArgumentException:DataGridViewComboBoxCellの値が無効です
- 6. Google Analytics:フィルタパラメータの値が無効です
- 7. XamlParseException - プロパティのプロパティ値(...)が無効です。
- 8. foreignObject(FIREFOX)のプロパティ値が無効です
- 9. Kubernetes - 展開が無効です。無効な値
- 10. System.ArgumentException:DatagridViewComboBoxCellの値が無効
- 11. JSF検証エラー:値が無効です
- 12. 文字の前後で値が無効
- 13. 戻り値が無効
- 14. プロメテウスクエリが無効な値
- 15. 無効な値がリリースビルド
- 16. 無効 '' yyy 'メッセージの値' xxx 'は無効です
- 17. 無効な値
- 18. エラー(エラードメイン= NSCocoaErrorDomainコード= 3840「文字0の値が無効です」UserInfo = {NSDebugDescription =文字0の値が無効}
- 19. "無効なJSON"、 "エラー": "無効な値"
- 20. jarsignerエラー:java.time.DateTimeException:MonthOfYearの値が無効です(有効な値は1〜12):0
- 21. ドロップダウンリスト有効無効値
- 22. RealmSwift:xCode 9のプロパティの値が無効
- 23. エラー:エラードメイン= NSCocoaErrorDomainコード= 3840 "文字0の値が無効です" UserInfo = {NSDebugDescription文字0の周り=無効な値}
- 24. Collectd cpu pluginタイプdisk_io_timeの値が無効
- 25. 実装データ型の値が無効
- 26. ハッシュマップの値が無効になる
- 27. OKTA - OAuthError:redirect_uriパラメータの値が無効
- 28. 無効な文字[59]がCookieの値
- 29. 無効なデフォルト値
- 30. 無効な値:org.sonarsource.scanner.maven
-1 "は機能しない" どう? –
個人的には、私はPOSIX以外のシステムの使用を拒否しており、私は 'ssize_t'を利用しています。 –