C/C++ knows three types of integer literals: octal, decimal, and hex.
Since C++14 there is a fourth type: binary.
A literal beginning with a zero and followed by another digit is treated as octal value (base 8) which is not allowed to contain the digits 8 and 9.
See also
integer literal - cppreference.com[
^].