Unitialized memory (in C) is initialized to 0

uninitialized memory is always initialized to 0 Now this might sound good but actually its not. The reason is that it is harder to understand if the value is actually 0 or uninitalized

is there any way to fix it? On my machine using GCC it doesnt happen

so they added the fix for C++ but not for C

most compilers initialize BSS (uninitialized memory) to 0’s at runtime, after some research LLVM (I suppose what replit uses) also does it. It can be changed at compiler options (as it writes but not sure)

#include <stdio.h>

int main() {
    int c; /* in bss */
    int c2 = 0; /* in initialized memory section */
    /* according to layout, bss > initialized memory everytime */
    printf("%d\n", &c > &c2); /* should always print 1 if I am correct */
    printf("%d %d\n", c, c2); /* but both are 0??? */
    
    return 0;
}

this is the code I wrote right now to prove I am correct.