операторы сравнения, отношения
a==b a~=b или a<>b a<b a<=b a>b a>=b
любой тип переменной для сравнения величин a==b, a~=b
a<>b, но для сравнений, связанных с порядком
a<b, a<=b,
a>b, a>=b, ограничен массивами вещественных чисел
с плавающей запятой и массивами целочисленных значений.
любой тип переменной для сравнения величин a==b, a~=b
a<>b, но для сравнений, связанных с порядком
a<b, a<=b,
a>b, a>=b, ограничен массивами вещественных чисел
с плавающей запятой и массивами целочисленных значений.
Нужно различать два класса операторов:
a==b, a~=b (или по-другому a<>b).
Эти операторы применимы к любому типу операндов.
a<b, a<=b,
a>b, a>=b. Эти операторы применимы
только к массивам чисел с плавающей запятой и целочисленным массивам.
Смысл операторов сравнения также зависит от типа операндов:
таких как массивы чисел с плавающей запятой и массивы целочисленных значений, массивы логических значений, строковые массивы, массивы полиномиальных и рациональных значений, массивы дескрипторов, списки... применимы следующие правила:
Если a и b являются массивами одного типа и размера,
то сравнение выполняется поэлементно, а результат является массивом логических значений
того же размера.
Если a и b являются массивами одного
типа, но a или b является скаляром, то
скаляр сравнивается с каждым элементом массива. Результат является массивом
логических значений того же размера, что и оператор-нескаляр.
В иных случаях результатом является логическое значение %f
Если типы данных операндов отличаются, но "совместимы" как числа с плавающей запятой и целые числа, то перед сравнение производится преобразование типов.
таких как function и libraries
результатом является %t, если объекты идентичны и
%f в противном случае.
Сравнение на равенство операндов несовместимых типов данных возвращает
%f.
// поэлементные сравнения (1:5)==3 (1:5)<=4 (1:5)<=[1 4 2 3 0] 1<[] list(1,2,3)~=list(1,3,3) "foo"=="bar" sparse([1,2;4,5;3,10],[1,2,3]) == sparse([1,2;4,5;3,10],[1,2,3]) //пообъектные сравнения (1:10)==[4,3] 'foo'==3 1==[] list(1,2,3)==1 isequal(list(1,2,3),1) isequal(1:10,1) //сравнение с преобразованием типов данных int32(1)==1 int32(1)<1.5 int32(1:5)<int8(3) p=poly(0,'s','c') p==0 p/poly(1,'s','c')==0 | ![]() | ![]() |