Базовые конструкции языка С/С++
Алфавит языка • строчные и прописные буквы латинского алфавита • цифры от 0 до 9 • набор специальных символов: " { } , | [ ] + - % / ; ' : ? < > = ! & # ~ ^. * • прочие символы. • ключевые слова if while continue и т. д
Константы • • Целые Вещественные Символьные Строковые ”hello world!!” • • Десятичный • Десятичные 'H‘ 9, 73, 12 5. 8, 9, 0. 2 • • Экспоненциальный • Восьмеричные ’’ 020, 017, 07155 3 E 6, 1 e-7 • • Шестнадцатеричные ’n’ 0 x. A, 0 x 1 B 8 • ’ 12’
Коментарии • Строчный // • Блочный /* */
Типы данных Тип данных определяет : • Внутреннее представление памяти в компьютере • Множество значений, которые могут принимать величины • Операции и функции, которые можно применять к величинам
Целочисленные типы: • char • short или short int • long или long int Могут использоваться с модификатором • signed • unsigned
Тип Байты Биты Min Max signed char 1 8 -128 127 unsigned char 1 8 0 255 bool 1 8 0 255 signed short 2 16 -32 768 32767 unsigned short 2 16 0 65535 signed int 4 32 -2 147 483 648 2 147 483 647 unsigned int 4 32 0 4 294 967 295 signed long 4 32 -2 147 483 648 2 147 483 647 unsigned long 32 0 4 4 294 967 295
Вещественные типы данных Тип Байты Биты Min float 4 32 -2 147 483 648. 0 long float 8 64 -9 223 372 036 854 775 808. 0 double 8 64 -9 223 372 036 854 775 808. 0 Max 2 147 483 647. 0 9 223 372 036 854 775 807. 0
• void(отсутствие типа) • символьный –char • ‘m’ • ‘n’ • логический –bool • true • false 1 0
Оператор typedef Позволяет дать имя типу typedef int tmp; Определения int a; tmp a; эквивалентны
Приведение типов не явное char a = 5; char b = ‘u’; short a=5; int b; b = (int) a;
Основные операции ++ -- += -= *= /= %= && || ! Стр. 32
Операторы и циклы • Выражение(заканчивается ; ) –i++; i=5; int *p; и т. д. • if(выражение)условие; [else условие; ] –If(a==5)printf(“a==5”) ; else {printf(“a!=5”); } If(a=5) = присваивание If(a==5) == сравнение
switch(выражение){ case константное выражение : [список операторов] … [default: список операторов] }; switch(r){ case 1: printf("1n"); default : printf("switchn"); }; Лучше дописывать break;
while (выражение) операторы; do операторы while(выражение); while(r<10){ r++; }; do{ r++; }while(r<10);
for(инициализация; выражение; модификатор) оператор; for(int i=0; i<n; i++){}; for(j=5, i=k*12; l<50; j--){}; for(int i=0, short j=5; i<10; i++) for(i=0, j=5; i<10; i++) нельзя! можно bool tmp; for(int i=9, tmp=3; i<10; i++){}; tmp внутри цикла 4 байта
Операторы передачи управления goto метка; Не использовать! метка : оператор; break; continue; в (циклах или switch) в циклах return [выражение] выход из функции
Указатели Переменная имеет два атрибута: • данные • адрес char a=5; в двоичной системе 0000 0101 Записываем данные по адресу 0 0 0 1
&a обращение к адресу переменной тип *имя; объявление указателя (нет данных, только адрес) int a=7; int *b=a; a++, *b++ Обращение к данным в a можно обратится и через указатель эквивалентны к b – обращение к адресу к *b – обращение к данным по этому адресу
Функции Тип Имя([параметры])[throw (исключения)] void swap(int a, int b){ int tmp; tmp=a; a=b; b=tmp; return; }; Вызов int с=6, d=8; swap(с, d);
main swap c d a b tmp 6 8 8 6 6 8 6
void swap(int &a, int &b){ Передача по адресу int tmp; tmp=a; a=b; b=tmp; return; }; Вызов int с=6, d=8; swap(с, d);
main swap c d a b tmp 8 6 6 8 8 6 6
Функции ввода/вывода printf(управляющая строка, переменные); scanf(управляющая строка, переменные); управляющая строка типа char* printf(“%dn”, tmp); scanf(“%d”, &test); Типичная ошибка – отсутствие &
%с символ %d целое десятичное число %i целое десятичное число %e десятичное число в виде x. xx e+xx %f десятичное число с плавающей запятой xx. xxxx %g %f или %e, что короче %o восьмеричное число %s строка символов %u беззнаковое десятичное число %x шестнадцатеричное число %p указатель %n указатель