It is actually a compiler dependent question as it is not specified in which order the arguments of printf() will be evaluated..According to CDECL convention which most of the compilers use , arguments are evaluated right to left..
So i XOR j will be found first which is given by : 4 XOR 8 = 12
Then i | j & j | i , so here AND is performed first..We know x AND x = x only.
So i | j | i = 4 OR 8 OR 4 = 12
Similarly the last argument from right which is same as middle one is also calculated as 12..
Hence A) should be the correct option,,