Страница 1 из 1
Неявные приведения типов в атлантис или фичи =)
Добавлено: 31 янв 2012, 12:12
Robis
Казалось бы два одинаковых условия
Код: Выделить всё
if( case(5; 5: 2; 0) = 2 )
Exit;
if( 2 = case(5; 5: 2; 0) )
Exit;
Но не тут-то было. В первом случае мы получим FALSE, во втором TRUE. А всё потому, что первый Case возвращает строку '2' которая не равна 2.
Во втором случае возвращаемая строка неявно приводится к числу и получаем TRUE. Фича?
Re: Неявные приведения типов в атлантис или фичи =)
Добавлено: 31 янв 2012, 16:29
KATZ
Интересное наблюдение! Только причина вряд ли в неправильных неявных приведениях типов, скорее, где-то глубже. Пробовал считать в вычислителе выражений (по Ctrl-F4):
'2'=2 дает TRUE, 2='2' тоже дает TRUE.
А вот еще несколько интересных результатов на ту же тему:
case(1;1:255;0) дает 255
case(1;1:256;0) дает 0
case(1;1:257;0) дает 1
Повезло, что до сих пор я эту функцию в своих поделках не использовал...
Re: Неявные приведения типов в атлантис или фичи =)
Добавлено: 01 фев 2012, 13:19
Robis
Продолжаем наблюдения на тему..
case(1; 1:'qqq'; 0) = 3, case(1; 1:'qqqq'; 0) = 4, case(1; 1:'qqqq'; ' ') = 'qqqq'
case(1; 1:257; 0) = 1, case(1; 1:257; word(0)) = 257
Похоже на то что, перед возвращением результата функция приводит его к типу, указанному в Else.