The underscore _
may be used as a digit separator. Being able to group digits in large numeric literals has a significant impact on readability.
The underscore may occur anywhere in a numeric literal except as noted below. Different groupings may make sense in different scenarios or with different numeric bases.
Any sequence of digits may be separated by one or more underscores. The _
is allowed in decimals as well as exponents. The separators have no semantic impact - they are simply ignored.
int bin = 0b1001_1010_0001_0100;
int hex = 0x1b_a0_44_fe;
int dec = 33_554_432;
int weird = 1_2__3___4____5_____6______7_______8________9;
double real = 1_000.111_1e-1_000;
Where the _
digit separator may not be used:
_121
)121_
or 121.05_
)10_.0
)1.1e_1
)10_f
)0x
or 0b
in binary and hexadecimal literals (might be changed to allow e.g. 0b_1001_1000)