Ответ 1
Не имеет значения, положите ли вы его с правой или с левой стороны; оператор ==
полностью симметричен.
Если оба операнда оператора ==
имеют арифметический тип, как в этом случае, тогда применяются "обычные арифметические преобразования" (C99 §6.5.9). В этом случае применяемое правило:
Если оба операнда имеют целочисленные типы или оба имеют unsigned целочисленных типов, операнд с типом меньшего целочисленного ранга преобразования преобразуется в тип операнда с большим рангом. (C99 §6.3.1.8)
Итак, -1 преобразуется в int64_t
. -1LL
не имеет значения.