2808

Выражения как комбинация операндов и операций

Лекция

Информатика, кибернетика и программирование

Лекция 6 Выражения Выражение – это комбинация операндов и операций, задающая порядок вычисления некоторого значения и принимающая это значение. Операции – это инструкции, определяющие действия над операндами. В качестве операнда могут выст...

Русский

2012-10-19

30 KB

4 чел.

Лекция 6

Выражения

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

  •  идентификатор – тип определяется объявлением идентификатора, значение идентификатора определяется типом (для целых и вещественных переменных – значение этого типа; для переменных перечислимого типа – значение одной из констант из соответствующего этому перечислению списка, тип значения - int; для структуры или объединения – совокупность всех значений структуры или объединения; для указателя – адрес некоторого объекта; для массива – массив значений специфицированного в его объявлении типа, либо константный адрес первого элемента массива; для функции – константный адрес точки входа в функцию и список её аргументов, которая возвращает значение определённого типа);
  •  константа – целочисленное значение, вещественное значение, символ (в выражениях всегда имеет тип int, значение – код символа) или строка (в выражении – константный адрес первого элемента строки);
  •  другое выражение.

Чтобы значение выражения было определено, значения всех операндов в выражении должны быть определены.

Скобочные выражения.

Круглые скобки применяются для изменения порядка вычисления выражений по сравнению с предусмотренным по умолчанию в зависимости от приоритета операций. Вначале всегда выполняются внутрискобочные операции.

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

Пример 1.

Компилятор может вычислить выражение a*b/c для целочисленных операндов различными способами. Существует операция «унарный плюс», применение которой гарантирует, что сначала будут вычислены операции в скобках.

Для целочисленных a=30, b=4, c=3 возможные порядки вычислений:

(a*b)/c=(120)/3=40

(a*b)/c=30*(1)=30

(a*b)/c=4*(10)=40

+(a*b)/c=(30*4)/3=40

Константное выражение – это выражение, результатом которого является константа и которое вычисляется на этапе трансляции программы, то есть до её выполнения. Следовательно, операндами константного выражения могут быть только константы.

Пример 2

#define MAXLINE 1000

char line[MAXLINE+1];

int seconds = 60 * 60 ;

Неявное преобразование типов при вычислении выражений.

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

char

unsigned char

short int

unsigned short int

int                                      Повышение диапазона значений

unsigned int

long int

unsigned long int

float

double

long double

В языке C действуют следующие правила преобразования:

  •  операнды типа float преобразуются к типу double;
  •  если один операнд имеет тип long double, то второй преобразуется к типу long double;
  •  если один операнд имеет тип double, то второй преобразуется к типу double;
  •  любые операнды типа char или short преобразуются к типу int;
  •  любые операнды типа unsigned char или unsigned short преобразуются к типу unsigned int;
  •  если один операнд имеет тип unsigned long, то второй преобразуется к типу unsigned long;
  •  если один операнд имеет тип long, то второй преобразуется к типу long;
  •  если один операнд имеет тип unsigned int, то второй преобразуется к типу unsigned int.

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

Операция явного преобразования типа будет рассмотрена позднее.


 

А также другие работы, которые могут Вас заинтересовать

44501. Визначений інтеграл та його застосування 3.14 MB
  Значний внесок у розв’язання проблеми про площу круга зробив видатний грецький математик IV ст. до н.е. Євдокс Книдський. Він вписував в круг правильний многокутник, а потім доводив, що за рахунок збільшення кількості сторін многокутника (відповідно зменшенням їх довжин) можна добитися того
44502. НАЦІОНАЛЬНА ЕКОНОМІКА 432.5 KB
  Метою практикуму є оволодіння знаннями та навичками практичних розрахунків, що здійснюють державні органи управління в процесі обґрунтування заходів державного втручання в економіку та особисто в діяльність окремих підприємницьких структур.
44503. Самай сүйек өзектері, олардың маңызы 15.31 KB
  Гуманисты были творцами новой системы знания в центре которого стояла проблема человека его земного предназначения термин humnist полагает П. Мишле выдвинул принципиально отличное от средневекового решения проблемы отношения человека к миру. Бурдаха где он писал что новое понимание искусства литературы науки новая концепция человека не вступали в противоречие в христианской религией ибо были предопределены ее пышным цветением в XIII в. Наиболее значительной для Тоффанина была идея божественности человека.
44504. Дабыл қуысы, қабырғалары, құрамы, қатынастары, отит кезіндегі асқынулар 16.68 KB
  Отит-құлақтың қабынуы. қөбіне ортаңғы құлақтың қабыну кездеседі-лабиринтит. Ортаңғы отит қоздырғышы кокктар-пнвмококк, стафилококк, гемофильді таяқшалар. Көбіне жоғары тыныс алу жолдарының асқынуларынан кейн п. б
44505. Көзұясы, қабырғаларының құрылысы, тесіктері, олардың маңызы 15.81 KB
  Начинается серия войн с Византией велись они с переменным успехом но в целом удачно для Болгарии. престиж Болгарии как международной державы был высок. Послов Болгарии за императорским столом сажали выше чем послов германского императора Оттона I. в Болгарии появилось богомильское движение дуализм.
44506. Қанат-таңдай шұңқыры, оның қабырғалары, тесіктері, қатынастары. Самай шұңқыры. Самайасты шұңқыры 15.81 KB
  Медиальды қабырғасы-төбе сүйегінің сыртқы бетінің сыналық бұрышының маңындағы төменгң бөлігінен, самай сүйектің қабықшалы бөлгінің сыртқы бетінен, сына сүйектің улкен қанатының саай шұңқырына қараған бетінен құралған
44507. Ми сауыты негізінің сыртқы беткейі 16.56 KB
  Шүйде сүйегі-os occipitale, ми саутының артқы қапталында орн. сыртқа беті-дөңестеу, ішкі беті-ойыстау келген тақ сүйек. Шүйде сүйектің артқы жағында ми сауытын омыртқа өзекшесімен жалғастырушы шүйделік үлкен тесік-foramen magnum, бүйір қапталында сигма тәрізді қойнаудың жүлгесі-sulcus sinus sigmoideus, орналасқан.
44508. Ми сауыты негізінің ішкі беткейі, тесіктері, маңызы 16.32 KB
  Түрік ершігінің бүйір бөлігінде-нервтік өрім жүлгесі-sulcus coroticus, орн. алд немесе мұрын қуысына қараған бетінде-сына сүйек қырқасы-crista sphenoidalis, ол кеңсірік сүйегінің қанатымен-ala vomeris, беттесіп кеңсірік-ілмектік өзекшені-canalis vomeroorastralis, құрайды. Сына сүйек қойнауы-sinus sphenoidalis
44509. Биотехнические системы 5.73 MB
  Биотехнические системы – особый класс больших систем, в которых биологические и технические элементы связаны в едином контуре управления, причем роль управляющего звена в них могут играть как технические, так и биологические звенья. Создание таких систем является сложной задачей, использующей целый арсенал отдельных приемов, методов и подходов