#define socket_t int*
#define INVALID_SOCKET (socket_t)(~0)
#define SOCKET_ERROR (socket_t)(-1)
#define INVALID_SOCKET (int)(~0)
#define SOCKET_ERROR (int)(-1)
#define INVALID_SOCKET (uint32_t)(~0)
#define SOCKET_ERROR (uint32_t)(-1)
问题1:看源码,看到这两个值,发现上面6行值都是 -1。
~0 按位取反不应该是int最大值吗?
if(INVALID_SOCKET < 0) {
printf("INVALID_SOCKET less than 0 \r\n");
} else {
printf("INVALID_SOCKET bigger than 0 \r\n");
}
问题2:如果 SOCKET_ERROR 定义成 (socket_t)(-1) 或者 (socket_t)(~0) ,这个值与0 比较,
它总是大于0的。
如果 SOCKET_ERROR 定义成 int 或 uint32_t ,与0比较,就是小于0的。
这是为什么?