quote:
But having said that - i don't see the harm in relaxing the rules so that if an expression "CONTAINED" a float - that the float wouldn't be rounded up.
Don't forget it's not just integers and doubles we are talking about - there's unassigned variables and strings too.

Should an expression containing a string variable be considered as a string expression? Should an expression containing an unassigned (null) variable aways evaluate to null?

As far as KiXtart (or any other language) is concerned an expression at it's most complex is always a pair of operands seperated by an operator. The operand may be a variable or constant or another expression.

This means that at the parsing/execution stage a maximum of two operands will be considered - there is no look forward to determine whatever else is in the original expression.

The use of functions returning various data types complicate the issue still further.

It is far better to stick with the existing rules, consistantly adhered to (bugs notwithstanding [Wink] )

The rule is:
In any binary expression the operand on the right is converted to the same type as the operand on the left

Just follow the rules of precedence and the rule always holds true.

If you want to get a real headache, look up the YACC and Bison utilities to get a view of how most modern compilers and interpreters work.