1.47.1. Integer Lexemes

The compiler directly supports literals of all the numeric types, but the lexicology is a sanitised version of that used by C. Note in particular that 010 is decimal ten in Felix!
Start C++ section to tut/examples/tut158.flx[1 /1 ]
     1: include "std";
     2: 
     3: // radix
     4: {
     5:   val i1 = 999;      // decimal
     6:   val i2 = 0b1111;   // binary
     7:   val i3 = 0o7777;   // octal
     8:   val i4 = 0d9999;   // decimal
     9:   val i5 = 0xF1_F2;  // hex
    10: };
    11: 
    12: // underscores
    13: {
    14:   val i1 = 123_456;
    15:   val i2 = 0x_FF_FFu;
    16: };
    17: 
    18: // normal signed integers
    19: {
    20:   val i1 : tiny = 1t;
    21:   val i2 : short = 1s;
    22:   val i3 : int = 1; // default
    23:   val i4 : int = 1i;
    24:   val i5 : long = 1l;
    25:   val i6 : vlong = 1ll;
    26: };
    27: 
    28: // normal unsigned integers
    29: {
    30:   val i1 : utiny = 1tu;
    31:   val i2 : utiny = 1ut; // u may be first or last
    32:   val i3 : ushort = 1su;
    33:   val i4 : uint = 1u; // default
    34:   val i5 : uint = 1iu;
    35:   val i6 : ulong = 1lu;
    36:   val i7 : uvlong = 1vu;
    37:   val i8 : uvlong = 1llu; // alternate
    38: };
    39: 
    40: // exact signed integers
    41: {
    42:   val i1 : int8 = 1i8;
    43:   val i2 : int16 = 1i16;
    44:   val i3 : int32 = 1i32;
    45:   val i4 : int64 = 1i64;
    46: };
    47: 
    48: // exact unsigned integers
    49: {
    50:   val i1 : uint8 = 1u8; // 1iu8 not allowed
    51:   val i2 : uint16 = 1u16;
    52:   val i3 : uint32 = 1u32;
    53:   val i4 : uint64 = 1u64;
    54: };
    55: 
    56: // floats obey C99 rules, except we allow underscores
    57: {
    58:   val x1 : float = 2.2f;
    59:   val x2 : double = 2.2;
    60:   val x3 : ldouble = 2.2l;
    61:   val x4 : double = 22_345.78;
    62:   // val x5 : float = 0xFFFF.FFp4f; // doesn't work on g++ 2.95.3
    63:   val x6 : double = 2.2e4;
    64:   val x7 : float = 2.2e4f;
    65: };
    66: 
End C++ section to tut/examples/tut158.flx[1]