
Лекция-СИ_2_рус.ppt
- Количество слайдов: 32
Типы данных Лектор Махметова А. М.
ВОПРОСЫ: 1. 2. 3. Основные типы данных Операторы Преобразование типов
Основные типы данных üchar (8 бит) – символный тип данных; üshort – üint – ülong – короткое целое число; удвоенное целое число; üunsigned – беззнаковое целое число; üfloat – действительное число; üdouble – удвоенное действительное число; ülong double – удлиненное и удвоенное действительное число.
Тип данных Длина Диапазон Char 1 байт 128. . . +127 unsigned char 1 байт 0. . . 255 short int 2 байт 0. . . 32767 unsigned short 2 байт 0. . . 65 535 Int 4 байт 32768. . . 32767 unsigned [int] 4 байт 0. . . 4294967295
Тип данных Длина Диапазон Long 4 байт 2147 483 648. . . 2 147483 647 unsigned long 4 байт 0. . . 4 294 967 295 Float 4 байт 3. 4*10 38. . . 3. 4*1038 Double 8 байт long double 1. 7*10 308. . . 1. 7*10308 10 байт 3. 4*10 4932. . . 3. 4*104932
При описании переменных можно указать значение констант. Пример: int k=0; int k 1, k 3=0; Ключевые слова unsigned используется как модификатор типов int, long, short. Пример: unsigned int sum=0;
Тип char можно применять для описания беззнаковых целых чисел в диапазоне 0– 255. Пример: char c 1; char ck=’k’;
Пример описание чисел с плавающей точкой: иипы float и double. float s 1, s 2; float sum=1. 5; В языке С для возврарщение значение объекта в байтах применяется стандартный операция sizeof. Пример: printf(“тип данных double занимает %d байт n", sizeof(double));
Символные строки В языке С нет специального типа описывающего символьные строки. Символьные строки воспринимаются как массив состоящий из элоементов типа char. Символьные строки в памяти располагаются в ячейках последовательно и в конце ставится символ ‘o’. Длина символной строки определяется с помощью ключевого слова strlen.
#define – применяется для определения символных констант. Мысалы: #define NULL ‘/o’ #define IZЕT “наука”
Функции printf және scanf В языке С обмен данными с внешней средой осуществляеттся с помощью дириктивы
Функция printf() предназначена для форматированного вывода данных. Общий формат: рrintf (<управляющая строка>, <список аргументов>); Управляющая строка заключается в кавычки и указывает компилятору вид выводимой информации. Она может включать спецификации преобразования и управляющие символы.
Спецификация преобразования имеет вид: %<флаг><размер поля. точность>спецификация где флаг может принимать следующие значения: выравнивание влево выводимого числа (по умолчанию выполняется выравнивание вправо); + выводится знак положительного числа; размер поля – задает минимальную ширину поля, т. е. длину числа. При недостаточной ширине поля выполняется автоматическое расширение; точность – задает точность числа, т. е. количество цифр в его дробной части; спецификация указывает вид выводимой информации.
Основные форматы функции печати: %d – на печать десятичное число; выводится целое %i – на печать деятичное число; выводится целое %f – на печать выводится число с плавающей точкой ([-]dddd); %e – на печать выводится экспоненциальное число с плавающей точкой ([-]d. dddde dd) ;
%E – на печать выводится экспоненциальное число с плавающей точкой ([ ]d. dddd. E dd); %c – на печать выводится один символ; %s – на печать выводится строка символов; %u – на печать выводится беззнаковое, целое десятичное число; %o – на печать выводится беззнаковое, целое восьмиричное число; %x – на печать выводится беззнаковое, целое шеснадцатиричное число;
Примеры: printf("Только %d%% предприятий не работало. n", 5); Получим: Только 5% предприятий не работало. printf ("x=%-8. 4 f s=%5 d %8. 2 f ", x, s, x); Получим: х=12. 3450 s= 777 12. 34
Функция scanf() предназначена для форматированного ввода информации любого вида. Общий формат: scanf(<управляющая строка>, <список адресов>); Для функция scanf(), в отличие от функции printf (), использует в списке адресов указатели на перемен ные, т. е. их адреса. Для обозначения указателя перед именем переменной записывается символ &, обозначающий адрес переменной. Для ввода значений строковых переменных символ & не используется. При использовании формата %s строка вводится до первого пробела. Вводить данные можно как в одной строке через пробел, так и в разных строках.
Пример: int course; float grant; char name[20]; printf ( "Укажите ваш курс, стипендию, имя n"); scanf ( "%d%f", &course, &grant); scanf ( "%s", name); при указании массива символов */ /* & отсутствует
Основные операторы языка С Оператор присваивания – записывается через символы Общий формат: <переменная><операция>=<выражение>;
Примеры: a=a+b; a+=b; a=a*b; a*=b; a=a-b; a- =b; a=a/b; a/=b;
В языке С можно использовать несколько последовательно записанные операторы присваивания. Пример: sum = a = b; Операция присваивания выполняется справо налево: значение переменной b присваивается переменной a, затем значение переменной а присваивается переменной sum.
Варианты записи оператора присваивания: 1) a = (b = 1) +2; в результате a=3, b=1. 2) a = b = 1 + 2; в результате a = 3, b = 3. 3) ((s=13+12)<=30) результат true
Операции увеличить на единицу и уменьшить на единицу (инкремент и декремент). Инкремент - ++ Декремент - -- Орерации инкремент и декремен меняют значение переменной, поэтому считаются “скрытой операцией присваивания”.
Запись операции инкремент: i++; или ++i; → i = i + 1; Запись операции декремент: i ; или --i; → i = i 1;
Операции инкремент и декремент записываются в двух формах: v. Префиксный - ++х; v. Постфиксный - х++; Префиксные операции выполняются перед основной операцией, а постфиксный после основной операцией.
Примеры: k=10; x=k++; /* x=10 k=11 */ x=++k; /* x=12 k=12 */ a=5; b=3; sum=a+b++; /* sum=8; b=4; */ sum=a+ ++b; /* b=4; sum=9; */ Приоритеты операции инкремент/декремент самые высокие.
Преобразование типов Если в выражении используется несколько разных типов, то они преобразуется к одному типу. Все основные типы, которых мы рассматривали преобразуется снизу вверх: char short int long float double
Пример: main( ) { char ch; int i; float f 1; f 1=i=ch='A'; printf("ch=%c, i=%d, f 1=%2. 2 fn", ch, i, f 1); ch=ch+1; i=f 1+2*ch; f 1=2. 0*ch+i; printf("ch=%c, i=%d, f 1=%2. 2 fn", ch, i, f 1); ch=2. 0 e 30; printf("Теперь ch=%cn", ch); } Выполнив программу "преобразования", получим следующие результаты: ch=A, i=65, f 1=65. 00 ch=B, i=197, f 1=329. 00 Теперь ch=
Операция приведения Существует возможность точно указывать тип данных, к которому необходимо привести величину. Этот способ называется приведением типов. Пример: int nice; nice = 1. 6+1. 7; nice = (int)1. 6+(int)1. 7; В первом случае используется автоматическое преобразование типов. Результат – 3. Во втором случае используется операция приведения: 1. 6 и 1. 7 преобразуются в целые числа 1, результат 2.
Неявное преобразование типа Неявные преобразования типа выполняются главным образом для согласования аргументов оператора со значениями, предполагаемыми в этих операторах. Все неявные преобразования типа, которые могут встретиться, перечислены в следующем слайде (слева указывается преобразуемый тип, а справа список типов, в которые он может быть преобразован).
char - int, short int, long int - char, short int, long int. short int - аналогично типу int. long int аналогично типу int. float - double, int, short int, long int (машинно зависимое преобразование, если преобразуемое значение слишком велико, то результат неопределен). double - float (преобразование с округлением и последующим отбрасыванием лишних разрядов), int, short int, long int.
Если в выражении учавствуют типы: char и short, то результат тип short; short и int, то результат тип int; int и long, то результат тип long; long и float, то результат тип float; float и double, то результат тип double.