Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры прога 2.docx
Скачиваний:
1
Добавлен:
18.09.2019
Размер:
83.31 Кб
Скачать

7.1,Объявление переменных. Массивы.

[спецификатор_класса_ памяти] спецификатор_типа

описатель [=инициатор] [,описатель [= инициатоор]]…;

Спецификатор бывает : auto, register , static , extern

Инициатор задает начальные значения для переменных, присваиваемые при объявлении.

Int a,b,c

Char c1 = ‘y’;

Если спецификатор опущен, то по умолчанию переме6нная считается auto. Переменная класса auto явным способом не инициализирована .

К любой переменной в объявлении может быть применен квалификатор const.

Ключевое слово void означает отсутствие типа или позволяет отложить определение типа.

Массив- это группа элементов одинакового типа, объединенных под одним именем. Из объявления массива компилятор получает информацию о числе элементов и об их типе.

Спецификатор_типа описатель [константное выражение]

7.2,Объявление переменных. Массивы.

Константное выражение задает кол-во элементов массива. Оно может быть опущено в следующих случаях:

1)если при объявлении массив инициализируется (задаются начальные значения)

2)если массив объявлен как формальный параметр функции

3)массив объявлен как ссылка на массив, явно определенный в другом файле

Массив можно инициализировать при его объявлении с помощью заключенного в {} списка инициализаторов, разделенных запятыми. Каждый инициализатор – это либо константное выражение, либо список инициализаторов. Если кол-во элементов массива, указанное в определении, больше числа инициализатора, то для переменных с классом памяти auto, static, extern будут первые.

Т.к. строка определяется как массив, последним элементом к-рого является символ ‘\0’ , то можно записать

Char str [ ] = “это массив”

Допускается использование многомерных массивов. Они объявляются :

Int a [ ] [ ] ;

Пример программы, копирующей исходную строку в результирующую:

#include<stdio.h>

main()

{char ish_str[ ]=”Hello”;

char res_str [20] ;

int I=0;

while ((res_str[I]=ish_str[I])!=’\0’)

I++;

printf (“%s\n”, res_str);

}

если переменная может рпинимать одно значение из определенного набора значений, то можно использовать перечисление

enum [имя_типа_перечислителя]{список переменных}

[описатель[,описатель]]

Переменная перичисления принимает одно значение из списка. Список имеет следующий формат : идентефикатор[= конст_выр]

[,идентефикатор[= конст_выр]]…

пр: enum boolean{no,yes};

По умолчанию первому значению списка соответствует 0, второму-1,и.т.д. если не все значения из списка специфицированы, то они продолжают прогрессию. Имена идентефикаторров списка должны быть уникальны, а вот значения могут повторяться

9.1,Операции и выражения. Арифметические операции

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

По типу выполняемой операции на: арифметические, поразрядные логические, сдвигов, логические, отношения , присваивания, и т.д.

Арифметические операции

бинарные + - * / %

операция деления целых (/) сопровождается отбрасыванием дробной части.

Операция взятия модуля (%) дает остаток деления первого операнда на второй. Эта операция не применима для типов float и double.

Специфичными для Си являются операция инкремента (++) и операция декремента (--). Они могут быть префексными ( знак операции перед операндом) и посфиксными ( знак операции после операнда). В обоих случаях значение операнда увеличивается(уменьшается) на 1. Но в первом случае значение

9.2,Операции и выражения. Арифметические операции

сначала будет увеличено(уменьшено), а потом использовано, а во втором – наоборот,сначало использовано, а потом увеличено или уменьшено.

10. Побитовые операции: поразрядные логические операции и операции сдвигов.

В Си имеется 6 операций для манипуляции с битами. Их можно применять только к целочисленным операндам (int, char, short, long).

Они делятся на две группы:

1)поразрядные логические операции

&-побитовая и

| - побитовая или

^ - побитовая исключающая или

~ - порозрядная инверсия

2)операции сдвигов

>> - сдвиг вправо

<< - сдвиг влево

Операция & часто используется для обнуления нек-рой группы разрядов n=n&077 – обнуляет в n все разряды ,кроме младших семи Операция | часто используется для установки разрядов.

x=x|SET_ON- устанавливает 1 в тех разрядах х, в к-рых она есть в SET_ON Операция ^ дает 0, если операнды совпадают, и 1- если они различны

Операция ~- унарная. Инвертирует биты.

Операторы << >> выполняют сдвиг влево или вправо левого операнда на число разрядов, задаваемых правым операндом, к-рый должен быть целым. Выдвигаемые биты теряются, а вдвигаемые нулевые биты. Сдвиг влево на 1,2,3…разрядов явл наиболее быстрым способом умножения на 2,4,8,.., сдвиг вправо- наиболее быстрым способом деления.