Новосибирский Государственный Университет
Опубликован: 26.08.2005 | Доступ: свободный | Студентов: 17897 / 3045 | Оценка: 4.07 / 3.55 | Длительность: 13:11:00
ISBN: 978-5-9556-0057-4
Лекция 3:

Операции

Операции, уровень приоритета которых равен 5

Уровень приоритета операций сдвига равен 5. Порядок выполнения операций - слева направо.

Операция сдвига влево: <<

Тип операнда - интегральный. Тип результата - такой же, как у левого операнда. Правый операнд преобразуется к типу int. Левый операнд сдвигается на число разрядов, равное значению правого операнда. Освобождающие разряды заполняются нулями.

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

ie1<<ie2

Двоичное представление ie1 сдвигается влево на ie2 разрядов, освобождающие разряды заполняются нулями.

Пример:

four=x<<2;
Операция сдвига вправо: >>

Тип операнда - интегральный. Тип результата - такой же, как у левого операнда. Правый операнд преобразуется к типу int. Левый операнд сдвигается на число разрядов, равное значению правого операнда. Сдвиг будет логическим сдвигом, если левый операнд имеет тип unsigned.

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

ie1>>ie2

Двоичное представление ie1 сдвигается вправо на ie2 разрядов. Сдвиг вправо может быть арифметическим (т. е. освобождающиеся слева разряды заполняются значениями знакового разряда) или логическим в зависимости от реализации, однако гарантируется, что сдвиг вправо целых чисел без знака будет логическим и освобождающиеся слева разряды будут заполняться нулями.

Пример:

x=x>>3;

Операции, уровень приоритета которых равен 6

Уровень приоритета операций отношения равен 6. Выполняются эти операции слева направо.

Операция меньше: <

Тип операндов - арифметический или указатель. Тип результата - int.

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

ae1<ae2

Истина, если ae1 меньше, чем ae2.

Пример:

if(x<0) printf("negative");
Операция больше: >

Тип операндов - арифметический или указатель. Тип результата - int.

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

ae1>ae2

Истина, если ae1 больше, чем ae2.

Пример:

if(x>0) printf("positive");
Операция меньше или равно: <=

Тип операндов - арифметический или указатель. Тип результата - int.

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

ae1<=ae2

Истина, если ae1 меньше или равно ae2.

Операция больше или равно: >=

Тип операндов - арифметический или указатель. Тип результата - int.

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

ae1>=ae2

Истина, если ae1 больше или равно ae2.

Операции, уровень приоритета которых равен 7

Уровень приоритетов операций равенства/неравенства равен 7, выполняются они слева направо.

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

Тип операндов - арифметический или указатель. Тип результата - int.

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

ie1==ie2

Истина, если ie1 равно ie2, иначе - ложь.

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

Тип операндов - арифметический или указатель. Тип результата - int.

Единственным целым значением, с которым можно сравнивать указатели, является нулевое значение!

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

ie1!=ie2

Истина, если ie1 не равно ie2.

Пример:

while (i!=0) 
	i=func;
Максим Сикстус
Максим Сикстус

При выполнении кода из Лекции 11, стр.2 получается результат:

x ravno 16.
x ravno 4.
x ravno 16.
x ravno 14.
x ravno 100.
x ravno 36.

Связано ли это с утверждением, что : "Единственным исключением при замене является макроопределение, находящееся внутри двойных кавычек"?

Андрей Белоусов
Андрей Белоусов

Я изучаю лекцию 5 и в ней есть выражения:

char *pc;

pc = (char*)0777;

Я так понял что, char *pc это ссылка на переменную pc,

0777 это тип int восьмиричный. А что делает выражение:

 pc = (char*)0777;

Serhii Kharchenko
Serhii Kharchenko
Украина
Александр Диордица
Александр Диордица
Россия, Москва, МГИУ