В последний раз - если человек понимает работу if( x || f() ) {} то он должен без труда понять и работу части этой записи - "голого" выражения (x || f()), результат вычисления которого отбрасывается за ненадобностью, как и результат вычисления присваивающего выражения a = b; Второе чаще применяется "само по себе", но бывает и как x = a = b; и как if( a = b) {}. Первое чаще стоит под if(), но может применяться само по себе. Принципиальной разницы