Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Sizeof выражение






sizeof (тип)

 

Пример:

 

#include < iostream.h>

int main()

{

float x = 1;

cout < < " sizeof (float): " < < sizeof (float);

cout < < " \nsizeof x: " < < sizeof x;

cout < < " \nsizeof (x + 1.0): " < < sizeof(x + 1.0);

return 0:

}

Результат работы программы:

sizeof (float): 4

sizeof x: 4

sizeof (x + 1.0): 8

 

Последний результат связан с тем, что вещественные константы по умолчанию имеют тип double, к которому, как к более длинному, приводится тип переменной х и всего выражения. Скобки необходимы для того чтобы выражение, стоящее в них, вычислялось раньше операции приведения типа, имеющей больший при­оритет, чем сложение.

Операции отрицания (-,! и ~). Арифметическое отрицание (унарный минус -) изменяет знак операнда целого или вещественного типа па противоположный. Логическое отрицание (!) дает в результате значение 0, если операнд есть истина (не нуль), и значение 1, если операнд равен нулю. Операнд должен быть целого или вещественного типа, а может иметь также тип указатель. Поразрядное отри­цание (~), часто называемое побитовым, инвертирует каждый разряд в двоичном представлении целочисленного операнда.

Деление (/) и остаток от деления (%). Операция деления применима к операндам арифметического типа. Если оба операнда целочисленные, результат операции округляется до целого числа, в противном случае тип результата определяется правилами преобразования. Опе­рация остатка от деления применяется только к целочисленным операндам. Знак результата зависит от реализации.

Операции сдвига (< < и > >) применяются к целочисленным операндам. Они сдвигают двоичное представление первого операнда влево или вправо на количе­ство двоичных разрядов, заданное вторым операндом. При сдвиге влево (< <) осво­бодившиеся разряды обнуляются. При сдвиге вправо (> >) освободившиеся биты заполняются нулями, если первый операнд беззнакового типа, и знаковым разря­дом в противном случае. Операции сдвига не учитывают переполнение и потерю значимости.

Операции отношения (<, < =. >, > =, ==.! =) сравнивают первый операнд со вто­рым. Операнды могут быть арифметического типа или указателями. Результатом операции является значение true или false (любое значение, не равное нулю, ин­терпретируется как true). Операции сравнения на равенство и неравенство име­ют меньший приоритет, чем остальные операции сравнения.

Поразрядные операции (&, |, ^) применяются только к целочисленным операн­дам и работают с их двоичными представлениями. При выполнении операций операнды сопоставляются побитово (первый бит первого операнда с первым би­том второго, второй бит первого операнда со вторым битом второго, и т.д.). При поразрядной конъюнкции, или поразрядном И (операция обозначается &) бит результата равен 1 только тогда, когда соответствующие биты обоих операндов равны 1.

При поразрядной дизъюнкции, или поразрядном ИЛИ (операция обозначается |) бит результата равен 1 тогда, когда соответствующий бит хотя бы одного из опе­рандов равен 1.

При поразрядном исключающем ИЛИ (операция обозначается ^) бит результата равен 1 только тогда, когда соответствующий бит только одного из операндов ра­вен 1.

Логические операции (& & и | |). Операнды логических операций И (& &) и ИЛИ (| |) могут иметь арифметический тип или быть указателями, при этом операнды в каждой операции могут быть различных типов. Преобразования типов не производятся, каждый операнд оценивается с точки зрения его эквивалентности нулю операнд, равный нулю, рассматривается как false, не равный нулю - как true). Результатом логической операции является true или false. Результат операции логическое И имеет значение true только если оба операнда имеют значение true. Результат операции логическое ИЛИ имеет значение true, если хотя бы один из операндов имеет значение true. Логические операции выполняются слева направо. Если значения первого операнда достаточно, чтобы определить результат операции, второй операнд не вычисляется.

Операции присваивания (=, +=, -=, *= и т.д.). Операции присваивания могут использоваться в программе как законченные операторы. Формат операции простого присваивания (=):

операнд_1 = операнд_2

Первый операнд должен быть L-значением, второй - выражением. Сначала вы­числяется выражение, стоящее в правой части операции, а потом его результат записывается в область памяти, указанную в левой части (мнемоническое правило: «присваивание - это передача данных " налево"»). То, что ранее хранилось в этой области памяти, естественно, теряется.

В сложных операциях присваивания (+=, *=, /= и т.п.) при вычислении выражения, стоящего в правой части, используется и L-значение из левой части. Напри­мер, при сложении с присваиванием ко второму операнду прибавляется первый, и результат записывается в первый операнд, то есть выражение, а +=b является более компактной записью выражения a = a + b.

Условная операция (?:). Эта операция тернарная, то есть имеет три операнда. Ее формат:






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.