Почему неверный сокет определен как ~ 0 в WinSock2.h (c ++)?

В WinSock2.h недопустимый сокет и ошибка сокета определяются как эти? Есть ли какое-то значение для этого?

#define INVALID_SOCKET  (SOCKET)(~0)
#define SOCKET_ERROR            (-1)

Ответы на вопрос(4)

Ваш ответ на вопрос