Цитата:
Изначально опубликовано mazzy
думаю, что все проще.
при присваивании булеву значению берется только младший байт
т.е. b = i выполняется как b = lowbyte(i)
Нет. Выполните Job из моего последнего сообщения и поймете что всё обстоит именно так как я в нём написал, а именно: b = ( i > 255 ) ? 255 : lowbyte( i );
Преобразование real->boolean происходит по видимому еще хуже - сперва происходит преобразование real -> int с потерей дробной части (!!!) и только потом уже (по всё той же корявой схеме) из int -> boolean. Тихий ужас.
Спасает только то что эти корявости имеют место быть только при присвоении к булевским переменным/параметрам ф-й, подвыражения в выражениях же вычисляются правильно.