## Declarations in toc Declarations have the following syntax: ``` : [type] [= expression]; ``` The square brackets (`[]`) indicate something optional. All of the following statements declare an new variable `x` which is an integer, and has a value of 0: ``` x : int; x : int = 0; x := 0; ``` Note that in the first of those statements, although no expression is specified, it defaults to 0. This is not true in C, and there will eventually probably be an option to leave `x` uninitialized. If you wanted x to be a floating-point number, you could use: ``` x : float; x : float = 0; x := 0.0; ``` Note that `0` can be used as both a `float` and an `int`eger, but when no type is specified, it defaults to an `int`, whereas `0.0` defaults to a `float`. Here are all of toc's builtin types and their ranges of values: - `int` - A 64-bit signed integer (always), -9223372036854775808 to 9223372036854775807 - `i8` - An 8-bit signed integer, -128 to 128 - `i16` - 16-bit signed integer, -32768 to 32767 - `i32` - 32-bit signed integer, -2147483648 to 2147483647 - `i64` - 64-bit signed integer (same as `int`, but more explicit about the size), -9223372036854775808 to 9223372036854775807 - `u8` - An 8-bit unsigned integer, 0 to 255 - `u16` - 16-bit unsigned integer, 0 to 65535 - `u32` - 32-bit unsigned integer, 0 to 4294967295 - `u64` - 64-bit unsigned integer, 0 to 18446744073709551615 - `float` - A 32-bit floating-point number, - `f32` - `f64` - `bool` - `char` At the moment, it is not technically guaranteed that `f32`/`float` is actually 32-bit and that `f64` is actually 64-bit; they are platform dependent. Perhaps someday there will be a version of toc which does not compile to C, where that could be guaranteed.