If I initialized variable like this:
static int i = 2 * 2 / 0;
Then, compiler give me an error.
prog.c: In function 'main':
prog.c:5:23: warning: division by zero [-Wdiv-by-zero]
static int i = 2 * 2 / 0;
^
prog.c:5:17: error: initializer element is not constant
static int i = 2 * 2 / 0;
But, If I use ||
instead of *
, like this:
static int i = 2 || 2 / 0;
then it's successfully compiled.
According to Operator Precedence, Precedence of *
higher than ||
. So, first 2 / 0
operation evaluated. Am I right?
So, why doesn't static int i = 2 || 2 / 0;
give an error?