====== Numeric literals ====== There are several ways you can express a number in **XC=BASIC** and there are a few rules you have to keep in mind. ===== Data types ===== Currently three numeric types are supported: byte, integer and float. The compiler will follow these rules when parsing numbers: * An integer between 0 and 255 will be treated as a //byte// * An integer between -32768 and 65535 will be treated as an //integer// * A number that features a decimal point (''.'') and is between -1.70141183E38 and 1.70141183E38 will be treated as a //float//. Normal and scientific notation are both accepted. * In any other cases the error "Number out of range" will be displayed and compilation will fail ==== A note on integers ==== While integers are signed shorts in **XC=BASIC**, some of the commands (e.g. ''PEEK'' and ''POKE'') treat them as unsigned. For this reason it is allowed to use numbers between 32767 and 65535, but they'll be treated as negative numbers by most of the commands. For example print 65535 will output -1, because ''PRINT'' treats integers as signed 2-byte numbers. ==== A note on floats ==== While any integer numbers are valid floats as well, you must distinguish them because the compiler is not smart enough to do so. The way you can express floats is to **always** write a decimal point, for example: let a% = 1.0 ===== Numeral systems ===== You can express byte and integer types in decimal, hexadecimal or binary numeral systems. The ''$'' prefix indicates a hexadecimal, while the ''%'' prefix indicates a binary number. Examples: let dnum = 10000 let hexa = $d020 let binary = %10010011