>>360
まずfp = fopen("ファイル名","r")の式が実行される。
つまりfopenの戻り値をfpに代入しているわけだな。
= (代入演算子)は代入した値(この場合fopenの戻り値)が演算子の結果となるので、それをNULLと比較している。

その書き方は真似するな。せめてif ((fp = fopen("ファイル名", "r") == NULL) {にしろ。

俺はこうしているが好きにしろ。
FILE *fp = fopen();
if (!fp)