Оператор запятой в C представляет собой точку последовательности , что означает, что выражения, разделенные запятой, выполняются слева направо. Значение всего выражения - это значение самого правого выражения, в вашем случае 2.1
, которое присваивается переменной p
.
Поскольку выражения в вашем примере не имеют побочных эффектов, использование разделителя запятых здесь не имеет никакого смысла.
С другой стороны, круглые скобки важны, так как оператор присваивания (=
) связывается сильнее, чем оператор запятой (он имеет более высокий приоритет) и будет оценен перед оператором запятой без скобок. Таким образом, результат будет p == 1
.