Salve, volevo chiedere spiegazioni riguardante un'esempio di codice inserito nela guida C del sito.
mi riferisco all'esempio di pag 37 [La Funzione fopen]


posto il codice:

codice:
#include <stdio.h>

int main()
{

   /* dichiara lo stream e il prototipo della funzione fopen */
   FILE *stream, *fopen();

   /* apre lo stream del file */
   stream = fopen("miofile.txt", "r");

   /* controlla se il file viene aperto */
   if ((stream = fopen("miofile.txt", "r")) == NULL)
   {
      printf("Non posso aprire il file %sn", "miofile.txt");
      exit(1);
   }

   [...]
   /* Codice che lavora sul file */
   [...]

}
il costrutto if testa la condizione interna alle parentesi e se vera esegue il blocco di istruzioni successivo, altrimenti lo salta....
in questo caso il test non viene fra lo stream e NULL, ma fral'esito della operazione stream = fopen("miofile.txt", "r") e NULL,

ora il codice funziona, perche nel caso l'operazione non vada a buon fine torna uno 0, il quale comparato con NULL da esito positivo,

Ciò che non capisco e per quale motivo fare 2 volte la stessa operazione, non basterebbe soltato testare se stream == Null? oppure omettere l'apertura dello stream prima del'if?