Compilation process is a bit different in C as compared to other programming languages.
In C, 3 phases are involved in getting an .exe file from .src file.
xyz.c -> PREPROCESSOR -> tmp.c(temporary) -> COMPILER -> xyz.obj-> LINKER -> xyz.exe
Basically, a preprocessor reads your code line by line and if it is a preprocessing statement, then only it performs the preprocessing directive and outputs your code to the Compiler in pure textual form.
In case of your code,preprocessor will send this code to the compiler for compilation :
//includes stdio.h from include folder
int main(void)
{
int i = -1;
int i2 = -2;
printf("%d", i2 - i2);
return 0;
}
So,when the compiler will compile this code,it will give the result for print as 0 only.
This is the reason you are getting 0 printed, when you are running the code.
Hope this will help you.