Parsing numbers in C based languages

In some C based languages such as C++, Java or Javascript any leading zeros at the start of a number will cause that number to be treated as octal (base 8).

This peculiar issue can occur in templating or anything else where a text input will be treated as a number.

This can occur in Javascript

var test1 = 10;
var test2 = 010;

alert(test1); // outputs '10'
alert(test2); // outputs '8'

Java

public static void main (String[] args)
{
  int test1 = 10;
  int test2 = 010;

  System.out.println("test1: " + test1);
  System.out.println("test2: " + test2);
  
  /*
  test1: 10
  test2: 8
  */
}

C++

int main() {

int test1 = 10;
int test2 = 010;

printf("test1: %i\ntest2: %i", test1, test2);

return 0;
    
    /*
    test1: 10
    test2: 8
    */
}