\_ 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;
\_ digit separator may not be used:
- at the beginning of the value (
- at the end of the value (
- next to the decimal (
- next to the exponent character (
- next to the type specifier (
- immediately following the
0bin binary and hexadecimal literals (might be changed to allow e.g. 0b_1001_1000)