Лекции. Основные понятия и определения
Скачать 1.94 Mb.
|
11.9. Логические операторыПорядок: →
Если первый операнд для оператора && равен 0, то второй не вычисляется. Если первый операнд для оператора || равен 1, то второй не вычисляется. Логические операторы языка Basic: Not (отрицание), And (И) и Or (Или). Также имеются операторы AndAlso, OrElse и Xor. Уровень их соответствует уровню логических операторов языка С. Приоритет между ними следующий (по убыванию слева направо): Not { And | AndAlso} {Or | OrElse} Xor. Различие между операторами And и AndAlso, Or и OrElse показано в параграфе 4.4. Следует обратить внимание на существенное различие в уровне приоритета операторов отрицания ! (язык С) и Not (язык Basic). 11.10. Уровень 13 (условное выражение)Порядок: → Правило записи: e1?e2:e3, где e1, e2, e3 - выражения. Порядок вычисления: - вычислить e1; - если e1 != 0, то результат = e2, иначе результат = e3. Пример. a В языке Basic есть аналогичный оператор, работающий по тому же правилу. Правило записи: If(e1,e2,e3), где e1, e2, e3 - выражения. Если e1 = true, то результат = e2, иначе результат = e3. Пример. If(a 11.11. Уровень 14 (операторы присваивания)Порядок: ← Правило записи: …[e0[<op>]=] e1[<op>]= e2 Здесь e1 - переменная (простая или с индексами), которой задается значение e2. e2 - выражение. e2 преобразуется к типу e1 (если возможно). Запись <op> является необязательной и означает выполнение указанной операции над "старым" значением e1 (в качестве второго операнда выступает e2), а затем присваивание полученного "нового" значения переменной e1. Допустимыми операциями являются: + - сложение, - – вычитание, * – умножение, / – деление, % – остаток, >>, << – сдвиг вправо или влево, &, ^, | – поразрядные операторы. Пример. a*=5; // Это эквивалентно a=a*5; Замечание. Выражение x*=y+1 означает x=x*(y+1), а не x=x*y+1, поскольку уровень оператора *= ниже уровня оператора +. В комбинированных операциях значение e1 вычисляется 1 раз, т.е. выражение a[i++]*=n; эквивалентно a[i]=a[i]*n; i=i+1; (постфиксный оператор ++), а выражение a[++i]*=n; - выражению i=i+1; a[i]=a[i]*n; (префиксный оператор ++). Оператор = может входить в состав выражения. Пример. while((c=getchar())!=EOF){// Это означает посимвольное чтение //текстового файла до его окончания EOF(End Of File) – символическая константа, означающая конец файла и определенная в файле stdio.h. Переменная e1 может быть указателем. Пример. int *x; ....... x+=2; // Изменяет значение x на 4 байта. Замечание. Не увлекайтесь сложными выражениями, пишите проще! Допустимо присваивание выражения e2нескольким переменным (многократное присваивание). Пример. float x, y, z; short k; …………………. x=3.5; y=-2.7; z=k=x+=x+y; // x=4.3 k=4 z=4 z=4, поскольку присваивание выполняется по очереди справа налево. Порядок выполнения: x+y //=0.8 x+= //=4.3 k= //=4 k-целое, дробная часть отбрасывается z= //=4 В языке Basic допустимы те же операторы, кроме многократного присваивания. |