Оператори2
Сайт на Delphi: ежедневни Delphi-новини, документация, статии, преглед, интервю, компютърен хумор.
Операторите могат да се разглеждат като функции, които са част от езика Delphi. Например изразът (x+Y) се състои от променливите x и y, наречени операнди, и оператора "+", който връща сумата от числата, присвоени на променливите x и y.
Операторите са @, not, l, *, /, div, mod и, shl, shr, as, +, - или, xor> =, >, , =, в и е. Операторите @, not и " са унарни (прилагат се към един операнд). Всички останали оператори са двоични (прилагат се към два операнда), с изключение на операторите + и -, които могат да се използват както унарни, така и двоични. Унарните оператори винаги предхождат оператор (например -v), с изключение на оператора 1LA", който следва операнд (например pL). Двоичните оператори се поставят между операндите (например A=7). За някои оператори полученият резултат може да зависи от типа на операндите. Например, операторът not извършва инверсия на отделни битове на цяло число и логическо отрицание за булев операнд.
Аритметичните оператори могат да се използват с цели и реални операнди. Това са +, -, *, /, div и mod оператори. В табл. 11.5 и 11.6 описват аритметичните оператори.
Таблица 11.5. Двоични аритметични оператори
Операция Тип операнд Тип резултат
събиране цяло число, реално цяло число, реално
изваждане цяло число, реално цяло число, реално
умножение цяло число, реално цяло число, реално
реално деление Цяло число, реално реално
целочислено деление
Общ div UnitSize
остатък цяло число цяло число
Таблица 11.6. Унарни аритметични оператори
Операция Тип операнд Тип резултат
номерположително цяло число, реално цяло число, реално
число отрицателно цяло число, реално цяло число, реално
Следните правила се прилагат за аритметичните оператори.
Резултатът от реалното деление x/y винаги е от тип Extended, независимо от типовете на операндите x и y. За други аритметични оператори типът резултат ще бъде Разширен само ако поне един от операндите е от тип Real. Ако един от операндите е от тип Int64, тогава типът резултат ще бъде Int64. В противен случай типът резултат ще бъде цяло число.
Резултатът от x div y е x/y, закръглен до най-близкото цяло число.
Операторът mod връща остатъка, получен от разделянето на операндите. С други думи, x mod y = x(x div y)*y.
Ще възникнат грешки по време на изпълнение, ако y е нула в x/y, x div y или x mod y.
Булевите оператори not, and, or и xor (Таблица 11.7) се прилагат към всеки булев операнд и връщат булев тип.
Таблица 11.7, Булеви оператори
Типове операнди Тип резултат
Готово и (Общо> 0)
Тези операции следват стандартните правила на булевата логика. Например, изразът x и y ще даде резултат True тогава и само ако и двата операнда имат резултат True.
Пълно или частично изчисление
Компилаторът поддържа два режима на оценка за операторите и и или: пълна оценка и частична оценка. Пълна оценка означава, че всички оператори в израза се изпълняват, дори ако резултатът от логическата оценка е недвусмислено определен след оценката на част от операторите. При частично изчисление, напротив, изчислението ще бъде прекратено след получаване на недвусмислен резултат. Например, ако изразът a и in се изчисли чрез частичновариант и операнд A е False, компилаторът няма да провери стойността на операнд B и ще върне крайния резултат False, тъй като резултатът така или иначе ще бъде False.
Използвайте директивата на компилатора $in, за да изберете режима на оценка. Директивата е зададена по подразбиране, което позволява частична оценка. За да получите пълния режим на оценка локално, трябва да използвате директивата ($to+). Когато задавате пълния режим на изчисление за целия проект, трябва да използвате прозореца за настройка на проекта, където има отметка в квадратчето за елемент Complete Boolean Evaf и всички модули източник трябва да бъдат прекомпилирани.
Ако сред операндите се появи операнд от тип Variant, тогава винаги се извършва пълното изчисление, независимо от директивата
Логически оператори за побитово изчисление
Логическите оператори, дадени в табл. 11.8 извършва побитови изчисления с целочислени операнди. Например, ако операндът X съдържа стойността 001101, а операндът Y съдържа стойността 100001, тогава в оператора - r := x og ї, -
на променлива r ще бъде присвоена стойност 101101.
Таблица 11.8. Логически оператори за побитово изчисление