2.50.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 felix section to tut/tutorial/tut-1.50.01-0.flx[1 /1 ]
     1: #line 4735 "./lpsrc/flx_tutorial.pak"
     2: //Check lexemes:integer
     3: //Check literals:integer
     4: #import <flx.flxh>
     5: 
     6: // radix
     7: {
     8:   val i1 = 999;      // decimal
     9:   val i2 = 0b1111;   // binary
    10:   val i3 = 0o7777;   // octal
    11:   val i4 = 0d9999;   // decimal
    12:   val i5 = 0xF1_F2;  // hex
    13: };
    14: 
    15: // underscores
    16: {
    17:   val i1 = 123_456;
    18:   val i2 = 0x_FF_FFu;
    19: };
    20: 
    21: // normal signed integers
    22: {
    23:   val i1 : tiny = 1t;
    24:   val i2 : short = 1s;
    25:   val i3 : int = 1; // default
    26:   val i4 : int = 1i;
    27:   val i5 : long = 1l;
    28:   val i6 : vlong = 1ll;
    29: };
    30: 
    31: // normal unsigned integers
    32: {
    33:   val i1 : utiny = 1tu;
    34:   val i2 : utiny = 1ut; // u may be first or last
    35:   val i3 : ushort = 1su;
    36:   val i4 : uint = 1u; // default
    37:   val i5 : uint = 1iu;
    38:   val i6 : ulong = 1lu;
    39:   val i7 : uvlong = 1vu;
    40:   val i8 : uvlong = 1llu; // alternate
    41: };
    42: 
    43: // exact signed integers
    44: {
    45:   val i1 : int8 = 1i8;
    46:   val i2 : int16 = 1i16;
    47:   val i3 : int32 = 1i32;
    48:   val i4 : int64 = 1i64;
    49: };
    50: 
    51: // exact unsigned integers
    52: {
    53:   val i1 : uint8 = 1u8; // 1iu8 not allowed
    54:   val i2 : uint16 = 1u16;
    55:   val i3 : uint32 = 1u32;
    56:   val i4 : uint64 = 1u64;
    57: };
    58: 
    59: // floats obey C99 rules, except we allow underscores
    60: {
    61:   val x1 : float = 2.2f;
    62:   val x2 : double = 2.2;
    63:   val x3 : ldouble = 2.2l;
    64:   val x4 : double = 22_345.78;
    65:   // val x5 : float = 0xFFFF.FFp4f; // doesn't work on g++ 2.95.3
    66:   val x6 : double = 2.2e4;
    67:   val x7 : float = 2.2e4f;
    68: };
    69: 
End felix section to tut/tutorial/tut-1.50.01-0.flx[1]
Start data section to tut/tutorial/tut-1.50.01-0.expect[1 /1 ]
End data section to tut/tutorial/tut-1.50.01-0.expect[1]