All variables in this declaration
int a, b, c, d, e = 0;
are not initialized except the last variable e. They would be zero-initialized if they had the static storage duration. However these variables are local variables with the automatic storage duration and are not initialized by the compiler implicitly.
You need to initialize each variable like
int a = 0, b = 0, c = 0, d = 0, e = 0;
Another approach if you want to initialize all variables by zero at once is to enclose the variables in a structure like
struct { int a, b, c, d, e; } s = { 0 };
In this case all variables will be initialized by zero. You can access them like for example s.a or s.b and so on.
Here is a demonstrative program.
#include <stdio.h>
int main(void)
{
struct { int a, b, c, d, e; } s = { 0 };
printf( "s.a = %d\n", s.a );
printf( "s.b = %d\n", s.b );
printf( "s.c = %d\n", s.c );
printf( "s.d = %d\n", s.d );
printf( "s.e = %d\n", s.e );
return 0;
}
Its output is
s.a = 0
s.b = 0
s.c = 0
s.d = 0
s.e = 0