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