Global variables are initialized to “0” by default.
How much difference does it make (if any) when I explicitly assign value “0” to it.
Is any one of them faster/better/more optimized?
I tried with a small sample .c program but I do not see any change in executable size.
Edit:0 I just want to understand the behavior. Its not a bottleneck for me in any way.
The answer to your question is very implementation specific but typically all uninitialized global and static variables end up in the .bss segment. Explicitly initialized variables are located in some other data segment. Both of these will be copied over by the program loader before the execution of
main(). So, there shouldn’t be any performance difference between explicitly initializing to zero, and leaving the variable uninitialized.IMO it is good practice to explicitly initialize globals and statics to zero, as it makes it clear that a zero initial value is expected.