Похоже, что все другие ответы объяснить тройной оператор. Я предполагаю, что вы запутались, потому что этот код сравнивает два сокета в численном порядке.
В Linux/Unix socket()
- это функция создания сокета, но она возвращает целое число. Все остальные данные, которые ОС должна отправлять и получать данные в сокете, например, ее IP-адрес, хранятся внутри ядра. Когда вы вызываете API как send()
, вы передаете это число, и ядро использует его, чтобы найти всю другую релевантную информацию о сокете в своих собственных структурах данных.
Файлы, трубы и другие материалы в Unix ведут себя одинаково. Эти целые числа называются файловыми дескрипторами.
Таким образом, этот код сравнивает числовые значения двух файловых дескрипторов. Я не могу придумать, почему это было бы полезно, кроме определения произвольного порядка на двух сокетах. Численное значение дескрипторов файлов не имеет смысла.
Сравнение числовых значений двух файловых дескрипторов, как правило, не имеет смысла ... у вас есть еще какой-то контекст? – FatalError
Вам нужно изучить C Basic trernary http://www.cprogramming.com/reference/operators/ternary-operator.html – Riad
Я положил контекст в сообщение выше;) – Danvdb