FILE *fd;
if (fd=fopen(fileName,"r") == NULL)
{
printf("File failed to open");
exit(1);
}
This is a code snippet. When I compile it with gcc, i get the following warning:-
warning: assignment makes pointer from integer without a cast
When I put fd=fopen(argv[2],”r”) within brackets, the problem gets solved..
I am not able to understand where am i converting integer to pointer when the brackets are not put.
Due to operator precedence rules the condition is interpreted as
fd=(fopen(fileName,"r") == NULL). The result of==is integer,fdis a pointer, thus the error message.Consider the “extended” version of your code:
Would you expect the last line to be interpreted as
(ok = fd) == NULL, orok = (fd == NULL)?