Variable initialization ----------------------- undefined --------- The value of these variables is the undefined value. The exact behaviour depends on the compiler options. There are three possibilities: * compile-time error (if possible to detect) * run-time error (unless disabled) * the variables get arbitrary values. int i; int#[4] i; int^ i; initialized ----------- These variables are initialized. In this case they are zero, so they will be placed in the "zero-initialized data" section in the final executable file (unless they are on the stack, then they are simply assigned their value). int i = 0; int#[4] i = [0,0,0,0]; int^ i = none; default ------- Initialization with default values: int i = _; int#[4] i = _; int^ i = _; This works on all types that have the "defval()" function in their namespace: namespace int { () defval(int ^value) { value^ = 0; } } // What about array types, pointers, optional types, etc?