8

の署名されていない対応物はptrdiff_t何ですか?そして同様に-署名された対応物はsize_t何ですか?

私が達成しようとしているのは、ptrdiff_t大きな値を気にせずに変数の正の値を格納するために使用できる符号なし型を使用することです。これはのようsize_tです。

size_t逆に、大きな値を気にせずに、の値を格納できる符号付き型が必要です。

4

2 に答える 2

8

ptrdiff_t(no uptrdiff_t)に対応する正式な署名のないものはないと思いますが、それを使用size_tするのはかなり合理的です。

POSIXでは、に署名された対応物size_tはですssize_tread()これは、たとえば、などの関数によって返される型です。

ssize_tこれは、基礎となるタイプとptrdiff_tが異なる実装がほとんどないことを示唆しています。

于 2012-05-01T13:38:45.720 に答える
4

size_tオブジェクトのサイズを表すために使用されます。コンパイラの作成者は負のサイズのオブジェクトを作成しないと広く信じられていました。

ptrdiff_t`を使用すると、比較方法によって違いが生じるため、符号付きの型は理にかなっていることに注意してください(妥当な値のためにこれを符号なしの型に変更するのは簡単です)。

5.7加法演算子

6 [...]他の算術オーバーフローと同様に、結果が提供されたスペースに収まらない場合、動作は未定義です。[...]

したがって、「非常に大きな値」に対して特別なタイプを作成する必要がある場合があります。

于 2012-05-01T13:38:21.260 に答える