Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Cloud/Virtualization forum!

Vishnu Prakash
Ranch Hand
Posts: 1026
1. // int j = 08; // Compile time error
Because octal number can't be 8.
2. int i= 0x10;

Question:
When the first is producing compile-time error then why second is not producing a compile-time error.

garima_cs
Greenhorn
Posts: 1
because in octal 1 and 0 both exists.........some of the people might be taking as '10' but it's basically 1 and 0 and thus will not give any compile error.

Alton Hernandez
Ranch Hand
Posts: 443
Originally posted by garima_cs:
because in octal 1 and 0 both exists

Actually, 0x10 is hex.

Tony Morris
Ranch Hand
Posts: 1608
Octal is a base-8 number system.
The 8 digits used to create an octal representation are {0,1,2,3,4,5,6,7}.
Clearly, 8 is not permitted in an octal representation, hence, compile-time error.

Hexadecimal is a base-16 number system.
The 8 digits used to create a hexadecimal representation are {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}.
Clearly, both 1 and 0 are permitted in a hexadecimal representation, hence, no compile-time error.

Decimal is a base-10 number system.
The 10 digits used to create a decimal representation are {0,1,2,3,4,5,6,7,8,9}.

Binary is a base-2 number system.
The 2 digits used to create a binary representation are {0,1}.

...