Forcing Data Types

Sorry if this seems too simple, but why do I get different results when passing '040' and '40' as an argument?
I'm programming a lathe and arguments are in 1/1000th inches, so '040' is much easier to read.
Thanks,
redmiata

void a_function(int variable_1, int variable_2) {
Serial.print("variable_1 = ");Serial.println(variable_1);
Serial.print("variable_2 = ");Serial.println(variable_2);
}

void setup (){
Serial.begin(9600);
}

void loop(){
a_function(040,40);
a_function(40,040);
delay(10000);
}

Numbers with a leading zero, like 040, are read by the compiler as octal (base 8 ).

I'm programming a lathe and arguments are in 1/1000th inches, so '040' is much easier to read.

Much easier than what? " 40" looks better to me. And the compiler, if that's important. (Without the quotes, of course.)

I understand the programming error now thanks to dxw00d...
In machining referring to a measurement as "040" (oh-four-oh) is understood to mean 40/1000 or forty thousandths.