What does it mean when a numeric constant in C/C++ is prefixed with a 0?

Sometimes we may see some numeric literals, which is prefixed with 0. This indicates that the number is octal number. So octal literals contain 0 at the beginning. For example, if an octal number is 25, then we have to write 025.


#include <stdio.h>
int main() {
   int a = 025;
   int b = 063;
   printf("Decimal of 25(Octal) is %d\n", a);
   printf("Decimal of 63(Octal) is %d\n", b);


Decimal of 25(Octal) is 21
Decimal of 63(Octal) is 51