Оператор ==
проверяет равенство. Например:
if ( a == b )
dosomething();
И, в вашем примере:
x = y == z;
x истинно (1), если y равно z. Если у не равно z, х ложно (0).
Типичная ошибка, которую допускают начинающие программисты на C (и опечатка, сделанная некоторыми очень опытными):
if ( a = b )
dosomething();
В этом случае b присваивается a, а затем оценивается как логическое выражение. Иногда программист делает это сознательно, но это дурной тон. Другой программист, читающий код, не будет знать, было ли это сделано преднамеренно (редко) или случайно (гораздо более вероятно). Лучшая конструкция была бы:
if ( (a = b) == 0 ) // or !=
dosomething();
Здесь b присваивается a, затем результат сравнивается с 0. Цель ясна. (Интересно, что я работал с программистами на C #, которые никогда не писали на чистом C и не могли сказать вам, что это делает.)