tldr; Yes, or you risk getting a random number as the starting value.
For automatic variables:
Some compilers might do it but the standard does not require it. A conforming implementation could leave them to be uninitialized garbage values.
For static variables:
They must be initialized to zero unless explicitly initialized otherwise.