In this c program
#include<stdio.h>
int main()
{
#if UnDefinedSymbolicConstant==0
printf("UnDefinedSymbolicConstant is equal to 0\n ");
#else
printf("UnDefinedSymbolicConstant is not equal to 0\n");
#endif
return 0;
}
UnDefinedSymbolicConstant has not been #define anywhere, still it is being assumed as 0 and gives the output on gcc-4.3.4 as:
UnDefinedSymbolicConstant is equal to 0
so,
Is this the standard behaviour or it works like this only in gcc?
Yes, this is specified by the standard in 6.10.1: