Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Операция, уровень приоритета которой равен 14



 

Уровень приоритета операции равен 14, выполняются такие операции справа налево.

 

Операция простое присваивание: =

Тип операндов: арифметические, указатели, объединения или структуры. Тип результата: если оба операнда имеют арифметический тип, то значение правого операнда преобразуется к типу левого операнда.

Использование:

v=e

Присваивание значения e переменной v.

Пример:

x=y;

 

Операция сложное присваивание: =

Обозначим < знак> один из знаков: +, -, *, /, %, > >, < <, &, ^, |.

В результате выполнения операции присваивания

v=e

где v - переменная, а e - выражение, значение выражения становится новым значением переменной v.

Операция присваивания

v < знак> = e

приблизительно эквивалентна оператору присваивания

v = v< знак> e

Пример 1:

y+=2; /* Увеличение переменной y на 2 */

p+=n;

x-=3;

ptr-=2;

timesx*=x;

x/=2;

x%=10;

x> > =4;

x< < =1;

remitems& =mask;

control^=seton;

additems |=mask;

Типы операндов и результата сложного оператора присваивания можно определить на основании этой эквивалентности. Однако приведенный эквивалент для сложного оператора присваивания не совсем точен. В выражении

v < знак> = e

операнд v вычисляется только один раз, в то время как в выражении

v = v < знак> e

этот операнд вычисляется дважды. Это различие проявляется в побочных эффектах, связанных с вычислением операнда v, например, при изменении значения какой-либо переменной. Рассмотрим это на примерах:

a[i++]* = n;

При выполнении вычисление левого операнда дает побочный эффект - увеличение значения переменной i. Следовательно, это присваивание не эквивалентно присваиванию

a[i++] = a[i++]*n;.

Эквивалентом первой операции присваивания может служить последовательность операций

a[i]=a[i]*n;

i=i+1;

а эквивалентом второй - последовательность операций

a[i]=a[i+1]*n;

i=i+2;

или последовательность операций

a[i+1]=a[i]*n;

i=i+2;

в зависимости от того, какая часть операции присваивания вычисляется раньше - левая или правая. Порядок таких вычислений не определен.

 

Операция, уровень приоритета которой равен 15

 

Уровень приоритета операции равен 15, выполняются такие операции слева направо.

 

Операция запятая: ,

Тип результата совпадает с типом правого операнда. Операция объединяет два выражения в одно выражение, значением которого является значение правого операнда; значение левого операнда вычисляется только для получения побочных эффектов.

Использование:

el, e2

Сначала выполняется выражение e1, потом выражение е2. Значением всего выражения является значение выражения е2.

Пример:

for(i=A, j=B; i< j; i++, j--)

/* организация циклического повторения.

Оператор со счетчиком */

p[i]=p[j];

 

Примеры простых задач

 

/* Задача № 1 (пример на использование операции *)

Определить площадь боковой поверхности конуса радиуса

r и имеющего длину образующей l. */

#include < stdio.h>

#include < math.h>

/* подключение библиотеки математических функций */

const float pi=3.14159;

float r=10; float l=50; float s;

main()

{

s=pi*r*l;

printf(" \n Площадь боковой поверхности s=%f", s);

}

 

/* Задача № 2 (пример на использование операций +,

* и /). Тело движется прямолинейно с ускорением.

Даны а(м/сек2) - ускорение, V(M/C) - начальная

Скорость. Требуется определить, какой путь пройдет

тело за t секунд. */

#include < stdio.h>

float а, v, t, s;

main()

{

a=20.2;

v=50.3;

t=65;

s=(v*t)+(a*t*t/2);

printf(" \n Путь s=%f M", S);

}

 

/* Задача № 3 (пример на использование операций =,

/ и вычисления степени). Вычислите среднее арифметическое

и среднее геометрическое трех чисел а, b, с. */

#include < stdio.h>

#include < math.h>

float a=b=c=2005.1; float x, у;

main ()

{

x=(a+b+c)/3;

y=pow( (a*b*c), (1/3));

/*функция pow берется из библиотеки math.h*/

ntf(" \n среднее арифметическое x=%f", x);

ntf(" \n среднее геометрическое y=%f", y);

}

 

/* Задача № 4 (пример на использование операций

=, *, / и функции hypot). Даны катеты прямоугольного

треугольника. Найти его гипотенузу и площадь. */

#include < stdio.h>

#include < math.h>

float x=y=50.7; float z, s;

main()

{

z=hypot(х, у); /* вычисление гипотенузы*/

s=x*y/2;

ntf(" \n гипотенуза=%f см", z);

printf(" \n Плoщaдь=%f кв см", s);

}

 

 

Лекция: Операторы.

 

 

-Выражения.

-Простейшие выражения.

-Операторы.

-Составные операторы.

 

Выражения

Выражение представляет собой объединение операций и операндов. Напомним, что операндом называется то, над чем выполняется операция. Простейшее выражение состоит из одного операнда. Опираясь на это понятие выражения, мы можем строить более сложные конструкции. Приведем несколько выражений:

1904 +100

a*(c-d)

x=0

x=y++

x> 3

Выражениями называются компоненты программы, составленные с использованием операций, литералов, констант, переменных (включая массивы, структуры и объединения) и вызовов функций. Порядок вычисления выражений определен лишь требованиями соответствия семантике операторов и соблюдения правил приоритета и порядка выполнения операций. При выполнении этих требований компилятор свободен в выборе порядка вычисления выражения, даже если вычисление подвыражений может привести к побочным эффектам.

В отличие от большинства других языков, в языке Си для задания определенного порядка вычисления выражения недостаточно только соответствующей расстановки скобок, так как компилятор может произвольно переупорядочивать выражения, включающие ассоциативные и коммутативные операторы (*, +, |, ^) даже при наличии скобок. Для задания желаемого порядка выполнения выражения нужно использовать дополнительные присваивания, если требуется, с использованием временных переменных.

Необходимо с осторожностью использовать выражения, при вычислении которых возможны побочные результаты, так как результаты вычисления таких выражений часто проявляются не сразу и, кроме того, зависят от используемого компилятора. Например, в результате вычисления операторов присваивания

j=3;

i=(k=j+1)+(j=5);

значение переменной i будет равно 9 или 11 в зависимости от того, какое подвыражение второй операции будет вычислено первым. Таким образом, с использованием разных компиляторов можно получить различные результаты.

 

Простейшие выражения

 

Простейшими выражениями называются выражения, сформированные с использованием констант типов int, char и enum, операции sizeof, унарных операторов - и ~, бинарных операторов + ~ * / % & | ^ < < > > = =! = < > < = > = и тернарной операции?:.

Простейшие выражения используются в операторе switch, в инициализаторах границ массивов и в операторе препроцессора #if.

Логические операции ||, & & являются условными логическими операциями, т. к. второй операнд вычисляется только при необходимости. В других языках программирования, например, в языке Паскаль, в логических операторах всегда вычисляются значения обоих операндов, даже если результат может быть определен вычислением одного операнда.

Важным свойством языка Си является то, что каждое выражение в Си имеет значение. Приведем несколько выражений и их значения:

Выражение Значение
-14+16
a=3+8
5> 3
14< 3
6+(c=3+8)

 

Операторы

 

Любое выражение может быть преобразовано в оператор добавлением к нему точки с запятой. Запись вида

выражение;

является оператором. Значение выражения игнорируется. Действие такого оператора состоит в создании побочного эффекта вычислением значения выражения.

Операторы служат основными строительными блоками программы. Программа состоит из последовательности операторов с добавлением небольшого количества знаков пунктуации. Оператор является законченной инструкцией для компиляторов. " Точка с запятой" является указанием на наличие оператора. Поэтому

line = 5

- это всего лишь выражение, которое может быть частью большого выражения, но

line = 5;

является оператором.

Выражение

5+5

не является законченной инструкцией, а служит указанием компьютеру сложить 5 и 5, но не говорит, что делать с результатом.

dog=5+5;

служит указанием компилятору, а затем компьютеру, поместить результат 10 в ячейку памяти, помеченную именем dog. После занесения в память числа 10 компьютер может приступить к выполнению следующих действий.

 

Составные операторы

 

Составной оператор представляет собой два или более операторов, объединенных с помощью фигурных скобок; он называется также блоком. Чтобы быть свободными в обсуждении составных операторов, рассмотрим один из операторов цикла языка Си и использования в Си функций printf( ) и scanf( ).

 

Оператор цикла while

 

Пусть нам нужно каким-то образом заставить компьютер выполнять повторяющиеся вычисления. Язык Си предлагает несколько способов реализации повторяющихся вычислений. Сейчас мы коротко обсудим один из них. Данный способ называется " циклом с предусловием while". Цикл while работает следующим образом. Когда программа в процессе выполнения впервые достигает оператора while, осуществляется проверка истинности условия, заключенного в круглые скобки. Затем идет тело цикла, заключенное в фигурные скобки. В теле цикла перевычисляется переменная, которая анализируется в условии, там, где встречается закрывающая фигурная скобка (конец тела цикла while), управление передается на оператор while. Если условие не выполняется, то управление передается за тело цикла, т.е. за закрывающую фигурную скобку.

Все операторы цикла языка Си рассматриваются в 8-ой лекции.

Пример 1:

/* От города А до города В расстояние равно 20 км.


Поделиться:



Последнее изменение этой страницы: 2017-04-13; Просмотров: 321; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.038 с.)
Главная | Случайная страница | Обратная связь