(char *) 0 создает нулевой указатель. Итак, вы видите, является ли значение fgets нулевым.
В документации по fgets указано, что он возвращает ноль, если произошла ошибка или вы достигли конца файла.
Кажется, что полный оператор проверяет, находитесь ли вы в конце файла, и, если это так, всплывают (хотя это предположение).