Мне нужно объединить два условия if в одно условие.
Код который внизу, полностью рабочий, но он с двумя условиями if
if (!(bind(ServSock[i], AI->ai_addr, (int)AI->ai_addrlen) == SOCKET_ERROR
|| SocketType == SOCK_STREAM && listen(ServSock[i], 5) == SOCKET_ERROR))
{
// пусто
}
else
{
// второе условия которое надо запихать в первое
if (i == 0 && AI->ai_next == NULL)
{
код 1
continue;
}
}
код 2
// прошу заметить код 2 находиться за условием
В конце должно получиться что то в этом роде. Как видите даже else
не будет в коде.
if (условие)
{
код 1
continue;
}
код 2
Достаточно убрать отрицание в начале первого условия и объединить со вторым условием оператором И
if (
(
bind(ServSock[i], AI->ai_addr, (int)AI->ai_addrlen) == SOCKET_ERROR
|| SocketType == SOCK_STREAM
&& listen(ServSock[i], 5) == SOCKET_ERROR
)
&& (i == 0 && AI->ai_next == NULL)
)
{
}
но вам в комментариях правильно подсказывают, что лучше разбить на несколько простых условий, это будет понятнее.
Конструкция:
if (X) {
}
else {
if (Y) {
// do smth
}
}
Эквивалентна:
if (!X && Y) {
// do smth
}
Но так как в вашем случае X
и Y
это громоздкие выражения, я бы написал:
if (!X) {
if (Y) {
// do smth
}
}
Или даже, по позможности, зарефакторил это к такому виду:
if (X1) {
return;
}
if (X2) {
return;
}
if (!Y1) {
return;
}
if (!Y2) {
return;
}
//do smth
где Xn
Yn
простые человекочитаемые выражения.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как устроена функция connect? Как лучше реализовать, стоит ли подключать 2 или 10 соединений с разными серверамиЧто будет, если подключений больше...