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.

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

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


 

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

53276. Гімнастика як дієвий засіб оздоровлення дітей в дошкільному навчальному закладі 163.5 KB
  Ведмежатасилачі молодша група Діти заповзають до зали спираючись на руки та ноги і сідають біля розкладених гир. Сидячи ноги разом руки з гантелями на колінах. Ноги на ширині пліч руки з гантелями біля тулуба пояса. Ноги поставити разом руки з гантелями простягнути перед собою і присідати 5 разів.
53277. EVERYDAY HEALTHY HABITS 107 KB
  Aims:to practice some grammar points (adverbs of frequency, Present Simple, Present Continuous); to ask and answer questions to find out about classmates’ health habits; to give practice in reading a text for specific information; to develop students’ listening skills; to create a relaxed, non-threatening atmosphere in the classroom.
53278. Халдейське царство 45 KB
  Мета: розкрити роль і значення Халдейського царства в історії стародавнього світу, виробляти в учнів уміння аналізувати, спів- ставляти, узагальнювати вивчений матеріал, висловлювати власну думку, розвивати творче мислення школярів, виховувати інтерес до історії найдавніших цивілізацій
53279. TRADITIONS. CUSTOMS. HALLOWEEN 95.5 KB
  The ancient people who inhabited what we now call Great Britain divided the year into two seasons: growing season and winter. Life and Death. Druids placed great importance on passing of one season to the next. Summer officially ended on October 31-st. On that day people celebrated the Celtic New Year. And the next day was the first day of winter. Being between two seasons it was a very magical time, when the barriers between our world and the spirit world were at their weakest...
53280. Halloween 1.25 MB
  Good morning, boys and girls! I’m glad to see you. I hope you are OK. In our today’s lesson we’ll get to know some new facts about one of the children’s best loved holidays, read the text, sing a song, play a game and do a lot of interesting activities.
53281. Halloween 136.5 KB
  What holiday is it? Ps: It is Halloween T: And what will be the topic of our lesson? Ps: Halloween. T: Yes, you are right. Today we are going to speak about famous American holiday- Halloween. At our lesson we learn new words, make up dialogues, write stories, sing songs and speak about Halloween.
53282. HANDOUT 85 KB
  Fats and sugars are things like oils, biscuits, sweets, chocolate and ice cream. These foods give us energy and are important for our nervous system. But too much of this food can make you fat and can be bad for your teeth. You should not eat more than two sweet or fatty things a day.
53283. Святкування Нового року 69.5 KB
  In England we do not stay at home on the New Year’s Day. We go for a walk to the central square. We listen to the strikes of the largest clock in Great Britain – Big Ben and enjoy the New Year coming. We celebrate Christmas on the 25th of December. On this day our Christmas holiday begin. That is why we like Christmas so much. Soon it will be the New Year , so I sent a postcard to all of you and wish you a happy New Year.
53284. Загальна характеристика дешифраторів 136.5 KB
  У загальному випадку дешифратор має n однофазних входів іноді 2n парафазних і m=2ⁿ виходів де n розрядність довжина коду який дешифрується. Індекс функції Fi визначає номер обраного виходу і відповідає десятковому еквіваленту вхідного коду. Тому дешифратор є перетворювачем вхідного позиційного коду в унітарний вихідний код.