These are string representations in different formats: decimal, octal and hexadecimal:
http://www.cplusplus.com/reference/cstdio/printf[
^].
First of all, 010 in C++ is pretty much misleading: it actually means decimal 8. Please see:
http://en.cppreference.com/w/cpp/language/integer_literal[
^].
In a way, all the outputs are identical, only expressed in positional numeric notations with different base. You may easily understand it if you change your formats to "a = %d", "a = octal 0%o" and "a = 0x%x". :-)
—SA