Скачать презентацию Типы данных Лектор Махметова А М ВОПРОСЫ Скачать презентацию Типы данных Лектор Махметова А М ВОПРОСЫ

Лекция-СИ_2_рус.ppt

  • Количество слайдов: 32

Типы данных Лектор Махметова А. М. Типы данных Лектор Махметова А. М.

ВОПРОСЫ: 1. 2. 3. Основные типы данных Операторы Преобразование типов ВОПРОСЫ: 1. 2. 3. Основные типы данных Операторы Преобразование типов

Основные типы данных üchar (8 бит) – символный тип данных; üshort – üint – Основные типы данных üchar (8 бит) – символный тип данных; üshort – üint – ülong – короткое целое число; удвоенное целое число; üunsigned – беззнаковое целое число; üfloat – действительное число; üdouble – удвоенное действительное число; ülong double – удлиненное и удвоенное действительное число.

Тип данных Длина Диапазон Char 1 байт 128. . . +127 unsigned char 1 Тип данных Длина Диапазон 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 Тип данных Длина Диапазон 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 При описании переменных можно указать значение констант. Пример: int k=0; int k 1, k 3=0; Ключевые слова unsigned используется как модификатор типов int, long, short. Пример: unsigned int sum=0;

Тип char можно применять для описания беззнаковых целых чисел в диапазоне 0– 255. Пример: Тип char можно применять для описания беззнаковых целых чисел в диапазоне 0– 255. Пример: char c 1; char ck=’k’;

Пример описание чисел с плавающей точкой: иипы float и double. float s 1, s Пример описание чисел с плавающей точкой: иипы 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 “наука” #define – применяется для определения символных констант. Мысалы: #define NULL ‘/o’ #define IZЕT “наука”

Функции printf және scanf В языке С обмен данными с внешней средой осуществляеттся с Функции printf және scanf В языке С обмен данными с внешней средой осуществляеттся с помощью дириктивы и функции ввода и вывода. Заголовок дириктивы: #include

Функция printf() предназначена для форматированного вывода данных. Общий формат: рrintf (<управляющая строка>, <список аргументов>); Функция printf() предназначена для форматированного вывода данных. Общий формат: рrintf (<управляющая строка>, <список аргументов>); Управляющая строка заключается в кавычки и указывает компилятору вид выводимой информации. Она может включать спецификации преобразования и управляющие символы.

Спецификация преобразования имеет вид: %<флаг><размер поля. точность>спецификация где флаг может принимать следующие значения: выравнивание Спецификация преобразования имеет вид: %<флаг><размер поля. точность>спецификация где флаг может принимать следующие значения: выравнивание влево выводимого числа (по умолчанию выполняется выравнивание вправо); + выводится знак положительного числа; размер поля – задает минимальную ширину поля, т. е. длину числа. При недостаточной ширине поля выполняется автоматическое расширение; точность – задает точность числа, т. е. количество цифр в его дробной части; спецификация указывает вид выводимой информации.

Основные форматы функции печати: %d – на печать десятичное число; выводится целое %i – Основные форматы функции печати: %d – на печать десятичное число; выводится целое %i – на печать деятичное число; выводится целое %f – на печать выводится число с плавающей точкой ([-]dddd); %e – на печать выводится экспоненциальное число с плавающей точкой ([-]d. dddde dd) ;

%E – на печать выводится экспоненциальное число с плавающей точкой ([ ]d. dddd. E %E – на печать выводится экспоненциальное число с плавающей точкой ([ ]d. dddd. E dd); %c – на печать выводится один символ; %s – на печать выводится строка символов; %u – на печать выводится беззнаковое, целое десятичное число; %o – на печать выводится беззнаковое, целое восьмиричное число; %x – на печать выводится беззнаковое, целое шеснадцатиричное число;

Примеры: printf( Примеры: 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() предназначена для форматированного ввода информации любого вида. Общий формат: scanf(<управляющая строка>, <список адресов>); Для функция scanf(), в отличие от функции printf (), использует в списке адресов указатели на перемен ные, т. е. их адреса. Для обозначения указателя перед именем переменной записывается символ &, обозначающий адрес переменной. Для ввода значений строковых переменных символ & не используется. При использовании формата %s строка вводится до первого пробела. Вводить данные можно как в одной строке через пробел, так и в разных строках.

Пример: int course; float grant; char name[20]; printf ( Пример: 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; Примеры: a=a+b; a+=b; a=a*b; a*=b; a=a-b; a- =b; a=a/b; a/=b;

В языке С можно использовать несколько последовательно записанные операторы присваивания. Пример: sum = a В языке С можно использовать несколько последовательно записанные операторы присваивания. Пример: sum = a = b; Операция присваивания выполняется справо налево: значение переменной b присваивается переменной a, затем значение переменной а присваивается переменной sum.

Варианты записи оператора присваивания: 1) a = (b = 1) +2; в результате a=3, Варианты записи оператора присваивания: 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; Запись операции декремент: i ; или --i; → i = i 1;

Операции инкремент и декремент записываются в двух формах: v. Префиксный - ++х; v. Постфиксный Операции инкремент и декремент записываются в двух формах: v. Префиксный - ++х; v. Постфиксный - х++; Префиксные операции выполняются перед основной операцией, а постфиксный после основной операцией.

Примеры: k=10; x=k++; /* x=10 k=11 */ x=++k; /* x=12 k=12 */ a=5; b=3; Примеры: 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( Пример: 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 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 и Если в выражении учавствуют типы: char и short, то результат тип short; short и int, то результат тип int; int и long, то результат тип long; long и float, то результат тип float; float и double, то результат тип double.