NAME:

        block

DESCRIPTION:

        A block is a special statment, that begins with '{', contains
        a list of statements, and ends with '}'.

        The block may define local variables. If for a variable no
        initialisation is given, the variable is initialised to 0 every
        time the block is entered. Otherwise, the initialisation
        expression is evaluated and its result assigned to the variable
        everytime the block is entered.

        Example definitions are:

          int i;
          int j = 3;
          int k = 3 * j, l;

          Here, i and l are both initialised to 0; j is initialised
          to 3, and k is initialised to 9 (3 * j).

        Local variables defined in a block are visible only until the
        end of the block. Definitions in an inner block hide definitions in
        outer blocks.

HISTORY:

        Up to 3.2.7 local variables were visible (from their point of
        definition) in the whole function. That is, code like

            do {
                int res;

                res = ...
            } while (res == 5);
            write(res);

        was perfectly legal. It is no longer, as 'res' ceases to exist
        with the closing '}' of the while().

        Up to 3.5.0 you could get this old behaviour back with the 
        #pragma no_local_scopes and switch it off again with 
        #pragma local_scopes.

        Since 3.5.0 it is not possible to disable the local scope behaviour.

        Up to 3.2.8, local variables could not be initialised in their
        definition.

UNItopia (mudadm@UNItopia.de)