сравнение
операторы сравнения, отношения
Синтаксис
a==b a~=b или a<>b a<b a<=b a>b a>=b
Аргументы
- a
любой тип переменной для сравнения величин
a==b
,a~=b
a<>b
, но для сравнений, связанных с порядкомa<b
,a<=b
,a>b
,a>=b
, ограничен массивами вещественных чисел с плавающей запятой и массивами целочисленных значений.- 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) 1 == complex(1,0) 1 > complex(1,0) // по-прежнему OK, однако... 1 > complex(1,1) // => ошибка: комплексные числа не упорядочены
--> int32(1) == 1 ans = T --> int32(1) < 1.5 ans = T --> int32(1:5) < int8(3) ans = T T F F F --> 1 == complex(1,0) ans = T --> 1 > complex(1,0) // по-прежнему OK, однако... ans = F --> 1 > complex(1,1) // => ошибка: комплексные числа не упорядочены at line 11 of function %s_2_s ( SCI\modules\overloading\macros\%s_2_s.sci line 23 ) Комплексные числа не поддерживаются. Пожалуйста, определите %s_2_s_custom() или проверьте свой код.
Сравнения с полиномами и рациональными числами:
p = 0*%s p == 0 r = p/(1+0*%s) r == 0 r == p ps = (1-%s)^2, pz = (1-%z)^2 ps == pz // => %F : требуются одни и те же переменные
--> p = 0*%s p = 0 --> p == 0 ans = T --> r = p/(1+0*%s) r = 0 -- 1 --> r == 0 ans = T --> r == p ans = T --> ps = (1-%s)^2, pz = (1-%z)^2 ps = 2 1 -2s +s pz = 2 1 -2z +z --> ps == pz // => %F : требуются одни и те же переменные ans = F
Сравнения с разрежёнными числовыми матрицами: все поэлементные сравнения выдают разрежённый
результат, в противном случае %F
.
sp = sparse([0 1 0 0 -2 0 4 0 0]) sp < 0 sp == 1 sp >= [2 3 -1 2 -4 0 3 1 0] sp == %i sp == list(3) // => %F
--> sp = sparse([0 1 0 0 -2 0 4 0 0]) sp = ( 1, 9) sparse matrix ( 1, 2) 1. ( 1, 5) -2. ( 1, 7) 4. --> sp < 0 ans = ( 1, 9) sparse matrix ( 1, 5) T --> sp == 1 ans = ( 1, 9) sparse matrix ( 1, 2) T --> sp >= [2 3 -1 2 -4 0 3 1 0] ans = ( 1, 9) sparse matrix ( 1, 3) T ( 1, 5) T ( 1, 6) T ( 1, 7) T ( 1, 9) T --> sp == %i ans = ( 1, 9)False sparse matrix --> sp == list(3) // сравнение объектов => сжатая %F ans = F
Сравнения между графическими идентификаторами:
plot2d() e1 = gce(); e2 = e1; // точки e1 и e2 на оодном и томже графическом объекте e2.tag e1.tag = "3 curves"; e1 == e2 e2.tag
--> e2.tag ans = --> e1.tag = "3 curves"; --> e1 == e2 ans = T --> e2.tag ans = 3 curves
Возможны сравнения псевдонимов функций:
--> sine = sin ; --> sine == sin ans = T --> синус = sind ; --> синус == sind ans = T --> синус(0:90:360) ans = 0. 1. 0. -1. 0.
Смотрите также
История
Версия | Описание |
6.0 |
|
Report an issue | ||
<< комментарии | Ключевые слова Scilab | доллар >> |