Am 20.04.2011 10:01, schrieb Pocket MicroTechnics Support: > Hello, > I have just a little question about expressions and types/cast management > in FreePascal. > > if I have a mixed expression with: > i, j, n : byte > k : word > > n := i + k - j; > > in this case, how does the compiler handle this situation? > it evaluated > Add i , k -> result > and then > sub result, j
Everything is evaluated with the native integer size, when assigning, the expression is converted and range checked if needed. > > how the types are handled? Thumb rules: * evaluate ordinal expressions with the native integer size of the cpu, this is also what standard pascal does * use a type which contains both involved operand types * the result type of an expression does not depend on it's context Unfortunatly, these rules have a lot of exceptions but the meta rule is to avoid that joe programmer can shoot himself into the foot. > does the compiler cast i to a word, add it (word addition) to k, and cast > j to word, do substraction and then the result is tranformed back to a > Byte to do the assignment? > > What I mean, does the compiler handle types locally by casting at each > node, and force the cast at assignment node? Yes. _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel