(size_t)-1
относится к типу size_t
.Обычно оно имеет значение 2 32 -1 или 2 64 -1 (4294967295
или 18446744073709551615
).
~0
имеет тип int
, и имеет значение -1
в системе с дополнением 2 (т. Е. Почти везде).
Оба могут иметь одинаковую битовую комбинацию - , если int
и size_t
имеют одинаковый размер, которым они обычно не являются.
Если вы хотите максимальное значение типа size_t
, вы можете использовать макрос SIZE_MAX
, определенный в <stdint.h>
.Если вы используете более старую реализацию (до C99), которая не обеспечивает SIZE_MAX
, (size_t)-1
будет работать.Я не уверен, почему вы хотите написать ~0
, а не -1
- если, возможно, вы не рассматриваете системы, не являющиеся дополнением к двум.