Слайд 1Типы данных
Лектор
Махметова А.М.
Слайд 2Вопросы:
Основные типы данных
Операторы
Преобразование типов
Слайд 3char (8 бит) – символный тип данных;
short –
короткое целое число;
int
– целое число;
long – удвоенное целое число;
unsigned – беззнаковое целое число;
float – действительное число;
double – удвоенное действительное число;
long double – удлиненное и удвоенное действительное
число.
Основные типы данных
Слайд 6При описании переменных можно указать значение констант.
Пример:
int k=0;
int k1, k3=0;
Ключевые слова unsigned используется как модификатор типов
int, long, short.
Пример:
unsigned int sum=0;
Слайд 7Тип char можно применять для описания беззнаковых целых чисел в
диапазоне 0–255.
Пример:
char c1;
char ck=’k’;
Слайд 8Пример описание чисел с плавающей точкой: иипы float и double.
float
s1, s2;
float sum=1.5;
В языке С для возврарщение значение объекта в
байтах применяется стандартный операция sizeof.
Пример:
printf(“тип данных double занимает %d байт \n", sizeof(double));
Слайд 9Символные строки
В языке С нет специального типа описывающего символьные
строки. Символьные строки воспринимаются как массив состоящий из элоементов типа
char.
Символьные строки в памяти располагаются в ячейках последовательно и в конце ставится символ ‘\o’.
Длина символной строки определяется с помощью ключевого слова strlen.
Слайд 10#define – применяется для определения символных констант.
Мысалы:
#define NULL ‘/o’
#define IZЕT “наука”
Слайд 11Функции printf және scanf
В языке С обмен данными с внешней
средой осуществляеттся с помощью дириктивы и функции ввода и
вывода.
Заголовок дириктивы:
#include
Слайд 12Функция printf() предназначена для форматированного вывода данных.
Общий формат:
рrintf (
строка>, );
Управляющая строка заключается в кавычки и указывает компилятору
вид выводимой информации.
Она может включать спецификации преобразования и управляющие символы.
Слайд 13Спецификация преобразования имеет вид:
%спецификация
где флаг может принимать следующие значения:
--
выравнивание влево выводимого числа (по умолчанию выполняется выравнивание вправо);
+
выводится знак положительного числа;
размер поля – задает минимальную ширину поля, т.е. длину числа. При недостаточной ширине поля выполняется автоматическое расширение;
точность – задает точность числа, т. е. количество цифр в его дробной части;
спецификация - указывает вид выводимой информации.
Слайд 14Основные форматы функции печати:
%d – на печать выводится целое десятичное
число;
%i – на печать выводится целое деятичное число;
%f – на
печать выводится число с плавающей точкой ([-]dddd.dddd);
%e – на печать выводится экспоненциальное число с плавающей точкой ([-]d.ddddedd) ;
Слайд 15%E – на печать выводится экспоненциальное число с плавающей точкой
([-]d.ddddEdd);
%c – на печать выводится один символ;
%s – на печать
выводится строка символов;
%u – на печать выводится беззнаковое, целое десятичное число;
%o – на печать выводится беззнаковое, целое восьмиричное число;
%x – на печать выводится беззнаковое, целое шеснадцатиричное число;
Слайд 16Примеры:
printf("Только %d%% предприятий не работало.\n",5);
Получим: Только 5% предприятий
не работало.
printf ("x=%-8.4 f s=%5d %8.2f ", x, s, x);
Получим:
х=12.3450 s= -777 12.34
Слайд 17Функция scanf() предназначена для форматированного ввода информации любого вида.
Общий
формат:
scanf(,);
Для функция scanf(), в отличие от функции printf
(), использует в списке адресов указатели на переменные, т.е. их адреса. Для обозначения указателя перед именем переменной записывается символ &, обозначающий адрес переменной. Для ввода значений строковых переменных символ & не используется. При использовании формата %s строка вводится до первого пробела. Вводить данные можно как в одной строке через пробел, так и в разных строках.
Слайд 18Пример:
int course;
float grant;
char name[20];
printf ( "Укажите ваш
курс, стипендию, имя \n");
scanf ( "%d%f", &course,
&grant);
scanf ( "%s", name); /* & отсутствует при указании массива символов */
Слайд 19Основные операторы языка С
Оператор присваивания – записывается через символы
Общий формат:
=;
Слайд 20Примеры:
a=a+b; a+=b;
a=a*b; a*=b;
a=a-b; a-
=b; a=a/b;
a/=b;
Слайд 21В языке С можно использовать несколько последовательно записанные операторы присваивания.
Пример: sum = a = b;
Операция присваивания
выполняется справо налево: значение переменной b присваивается переменной a, затем значение переменной а присваивается переменной sum.
Слайд 22Варианты записи оператора присваивания:
1) a = (b = 1)
+2;
в результате a=3, b=1.
2) a = b = 1 + 2;
в результате a = 3, b = 3.
3) ((s=13+12)<=30)
результат true
Слайд 23Операции увеличить на единицу и уменьшить на единицу (инкремент и
декремент).
Инкремент - ++
Декремент - --
Орерации инкремент и
декремен меняют значение переменной, поэтому считаются “скрытой операцией присваивания”.
Слайд 24Запись операции инкремент:
i++;
или ++i; → i =
i + 1;
Запись операции декремент:
i--; или --i; → i = i - 1;
Слайд 25Операции инкремент и декремент записываются в двух формах:
Префиксный -
++х;
Постфиксный - х++;
Префиксные операции выполняются перед основной операцией,
а постфиксный после основной операцией.
Слайд 26Примеры:
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; */
Приоритеты операции инкремент/декремент
самые высокие.
Слайд 27Преобразование типов
Если в выражении используется несколько разных типов, то они
преобразуется к одному типу.
Все основные типы, которых мы рассматривали
преобразуется снизу вверх:
char short int long float double
Слайд 28Пример:
main( )
{ char ch; int i; float f1;
f1=i=ch='A';
printf("ch=%c,i=%d,f1=%2.2f\n",ch,i,f1);
ch=ch+1;
i=f1=f1+2*ch;
f1=2.0*ch+i;
printf("ch=%c,i=%d,f1=%2.2f\n",ch,i,f1);
ch=2.0e30;
printf("Теперь ch=%c\n",ch);
}
Выполнив программу "преобразования", получим следующие результаты:
ch=A,
i=65, f1=65.00
ch=B, i=197, f1=329.00
Теперь ch=
Слайд 29Операция приведения
Существует возможность точно указывать тип данных, к которому необходимо
привести величину. Этот способ называется приведением типов.
Пример:
int nice;
nice = 1.6+1.7;
nice = (int)1.6+(int)1.7;
В первом случае используется автоматическое преобразование типов. Результат – 3.
Во втором случае используется операция приведения: 1.6 и 1.7 преобразуются в целые числа 1, результат - 2.
Слайд 30Неявное преобразование типа
Неявные преобразования типа выполняются главным образом для согласования
аргументов оператора со значениями, предполагаемыми в этих операторах.
Все неявные
преобразования типа, которые могут встретиться, перечислены в следующем слайде (слева указывается преобразуемый тип, а справа - список типов, в которые он может быть преобразован).
Слайд 31char - int, short int, long int.
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.
Слайд 32Если в выражении учавствуют типы:
char и short, то результат
тип short;
short и int, то результат тип int;
int
и long, то результат тип long;
long и float, то результат тип float;
float и double, то результат тип double.