Не был бы
(f.x = 1)
будет выражением, оценивающим значение true (технически оно оценивает результат присваивания, который в данном случае равен 1 / true), и, таким образом,
sizeof( f.x = 1)
запрашивает размер true с точки зрения того, сколько символов потребуется для его хранения?
Я должен также добавить, что статья в Википедии о sizeof хороша. В частности, они говорят, что «sizeof - это оператор времени компиляции, который возвращает размер, кратный размеру char, переменной или спецификатора типа в скобках, который ему предшествует».
В статье также объясняется, что sizeof работает с выражениями.