Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
http.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.34 Mб
Скачать

Оператор sizeof

sizeof - это унарный оператор, возвращающий длину в байтах переменной или типа, помещенных в скобки. Например: float f; printf("%f ", sizeof f); printf("%d", sizeof(int)); выдает 4 2. (Предполагается использование 16-битных целых.)

Помните, что для вычисления размера типа следует поместить имя типа в круглые скобки. В этом нет необходимости для имен переменных.

Использование sizeof помогает создавать переносимый код для тех случаев, когда код зависит от размера стандартных типов данных С. Например, представим, что программе, работающей с базой данных, необходимо сохранять 6 целочисленных значений в записи. Для того, чтобы сделать эту программу переносимой, не следует предполагать, что размер целочисленного типа - 2 или 4 байта, следует самостоятельно определить настоящую длину, используя sizeof. Следующая подпрограмма может быть использована для сохранения записи в файле: /* Запись записи в файл */ void put_rec(FILE *fp, int rec[6]) { int size, num; size = sizeof(int) * 6; num = fwrite(rec, size, 1, fp) ; if(num!=1) printf("ошибка записи"); } Самое главное в этом примере то, что put_rec() будет компилироваться и корректно запускаться на любом компьютере, включая компьютеры, использующие 2- и 4-байтные целые.

Оператор «запятая»

Оператор «запятая» используется для связки нескольких выражений. Левая сторона оператора «запятая» всегда вычисляется как void (то есть не выдающее значения). Это означает, что значение выражения, находящегося с правой стороны, станет значением разделенного запятыми выражения. Например: х = (у = 3, у + 1); Сначала присваивается 3 переменной у, а затем 4. переменной х. Скобки необходимы, поскольку оператор «запятая» имеет более низкий приоритет по сравнению с оператором присваивания.

Оператор «запятая» вызывает выполнение последовательности действий. Когда он используется с правой стороны оператора присваивания, то присваиваться будет значение последнего выражения, стоящего в разделенном запятыми списке. Ниже приведен еще один пример: у = 10; х = (у = у - 5, 25 / у); После выполнения х получит значение 5, поскольку исходным значением у было 10, а затем оно уменьшилось на 5. Затем 25 поделили на полученное 5 и получили результат.

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

Операторы . u ->

Оператор . «точка» и оператор -> «стрелка» используются для обращения к отдельным элементах структур и объединений. Структуры и объединения объединяют типы данных под одним именем.

Оператор «точка» используется при обращении собственно к структуре или объединению напрямую. Оператор -> используется при наличии указателя на структуру или объединение.

Предположим, имеется структура: struct employee { char name[80]; int age; float wage; } emp; struct tom *p = &emp; /* адрес emp в p */ Чтобы присвоить значение 123.23 элементу wage структуры emp следует написать: emp.wage = 123.23; Аналогичное присваивание можно выполнить с помощью указателя на структуру emp следующим образом: p->wage = 123.23;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]