Warum ist in WinSock2.h (c ++) ein ungültiger Socket als ~ 0 definiert?

In WinSock2.h sind der ungültige Socket und Socket-Fehler wie folgt definiert? Hat dies eine Bedeutung?

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

Antworten auf die Frage(6)

Ihre Antwort auf die Frage