Язык программирования Си «После нескольких лет работы вы
Язык программирования Си «После нескольких лет работы вы так и не можете решить восхищаться им или проклинать» (Джефф Элджер)
Джефф Элджер насчитал 2 786 942 книги по С и С++
Переменные и константы Имена переменных. Имена могут состоять из букв латинского алфавита, цифр и символа подчеркивания "_", который считается буквой. Строчные и прописные буквы различаются. Beta, beta , BETA - разные имена. Число символов в имени не ограничено.
Типы данных В языке Си имеются два существенно различных типа данных: int- целый; float - вещественный.
Из них можно создавать еще два типа: char - символьный , double - вещественный с двойной точностью. Из этих четырех базовых типов может быть получено много других типов.
Константы Целые константы и константы с плавающей точкой записываются в общепринятой для языков программирования форме: 13, -941, 0, 76; 13.0, 13E+0, -1.76, 0.123e-2, 6.02E23
Целый тип данных
Пример unsigned int n; unsigned int b; int c; (подразумевается signed int c ); unsigned d; (подразумевается unsigned int d ); signed f; (подразумевается signed int f ).
Для определения длины памяти, занимаемой переменной, можно использовать операцию sizeof языка СИ. a = sizeof(int); b = sizeof(long int); c = sizeof(unsigned long); d = sizeof(short);
Данные плавающего типа float, double, long double
float занимает 4 байта: 1 бит отводится для знака, 8 бит для экспоненты, 23 бита для мантиссы. Диапазон значений переменной с плавающей точкой приблизительно равен от 3.14E-38 до 3.14E+38.
double занимает 8 байт в памяти: 1 бит для знака, 11 бит для экспоненты, 52 бита для мантиссы. Диапазон значений равен от 1.7E-308 до 1.7E+308.
Выражения Комбинация знаков операций и операндов, результатом которой является определенное значение, называется выражением. Знаки операций определяют действия, которые должны быть выполнены над операндами. Каждый операнд в выражении может быть выражением.
Унарные операции + унарный плюс; ++ увеличение (инкремент); -- уменьшение (декремент);
Унарные операции выполняются справа налево Если знак операции записан перед операндом (префиксная форма), то изменение операнда происходит до его использования в выражении. Если знак операции записан после операнда (постфиксная форма), то операнд вначале используется в выражении, а затем происходит его изменение.
Операции уменьшения и увеличения Пусть n=5 Чему равны m и n после вычислений? 1) m=n++ 2) m=++n
Бинарные операции выполняются слева направо
Преобразования при вычислении выражений 1. Операнды типа float преобразуются к типу double. 2. Если один операнд long double, то второй преобразуется к этому же типу. 3. Если один операнд double, то второй также преобразуется к типу double. 4. Любые операнды типа char и short преобразуются к типу int.
Преобразования при вычислении выражений 5. Любые операнды unsigned char или unsigned short преобразуются к типу unsigned int. 6. Если один операнд типа unsigned long, то второй преобразуется к типу unsigned long. 7. Если один операнд типа long, то второй преобразуется к типу long. 8. Если один операнд типа unsigned int, то второй операнд преобразуется к этому же типу.
Пример double ft,sd; unsigned char ch; unsigned long in; int i; .... sd=ft*(i+ch/in);
Мультипликативные операции int i=5; float f=0.2; double g,z; g=f*i; Тип произведения i и f преобразуется к типу double, затем результат присваивается переменной g.
Мультипликативные операции int i=49, j=10, n, m; n = i/j; /* результат 4 */ m = i/(-j); /* результат -4 */
Мультипликативные операции int n = 49, m = 10, i, j, k, l; i = n % m; /* 9 */ j = n % (-m); /* 9 */ k = (-n) % m; /* -9 */ l = (-n) % (-m); /* -9 */ Операция остаток от деления (%) дает остаток от деления первого операнда на второй. Знак результата зависит от конкретной реализации. В данной реализации знак результата совпадает со знаком делимого
Аддитивные операции В некоторых случаях над операндами аддитивных операций выполняются общие арифметические преобразования. Однако преобразования, выполняемые при аддитивных операциях, не обеспечивают обработку ситуаций переполнения и потери значимости. Информация теряется, если результат аддитивной операции не может быть представлен типом операндов после преобразования. При этом сообщение об ошибке не выдается!
Пример int i=30000, int j=30000, k; k=i+j; В результате сложения k получит значение равное -5536.
Операции увеличения (++) и уменьшения (--) являются унарными операциями присваивания. Если знак операции стоит перед операндом (префиксная форма записи), то изменение операнда происходит до его использования в выражении и результатом операции является увеличенное или уменьшенное значение операнда.
В том случае если знак операции стоит после операнда (постфиксная форма записи), то операнд вначале используется для вычисления выражения, а затем происходит изменение операнда.
Примеры: int t=1, s=2, z, f; z=(t++)*5; Вначале происходит умножение t*5, а затем увеличение t. В результате получится z=5, t=2.
f=(++s)/3; Вначале значение s увеличивается, а затем используется в операции деления. В результате получим s=3, f=1.
Приоритеты операций и порядок вычислений
Массивы это конечная совокупность данных одного типа. Индексы массива в Си всегда начинаются с 0, а не с 1, т.е. описание int x[5]; порождает элементы: x[0], x[1], x[2], x[3], x[4].
Начальные значения массивам в языке Си могут быть присвоены при компиляции только в том случае, если они объявлены с классом памяти extern или static, например: static int a[5]={5,0,4,-17,49};
#include
Многомерные массивы В случае многомерных массивов количество пар скобок соответствует размерности массива, а число внутри скобок показывает размер массива по данному измерению. Например, матрица из 2 строк и 5 столбцов: int a[2][5].
#define M 5 #include
Функции Функция имеет вид: [тип] имя([список формальных параметров]) описания формальных параметров; { описания; операторы; } По умолчанию тип функции целый.
Возвращающее функцией значение передается в вызывающую программу оператором return (выражение). Значение выражения (возвращаемого значения) и есть результат функции.
Если в программе функция физически следует за вызывающей ее функцией, то надо объявить функцию внешней с помощью описателя extern: extern int fun()
/*Возведение в степень - главная программа*/ #include
/*СОРТИРОВКА */ #include
/*функция сортировки*/ int sor(int x[], int n) { int i,j,z; for(i=0;i
4220-yazyk_si.ppt
- Количество слайдов: 42

