Главная страница

Отчёт по лабе. Тема 2 Типы данных. Тема Встроенные типы данных Понятие переменной


Скачать 272.93 Kb.
НазваниеТема Встроенные типы данных Понятие переменной
АнкорОтчёт по лабе
Дата15.03.2023
Размер272.93 Kb.
Формат файлаpptx
Имя файлаТема 2 Типы данных.pptx
ТипДокументы
#990346

Тема 2. Встроенные типы данных

Понятие переменной


Перед использованием в программе любая переменная должна быть объявлена

Тип_данных имя_переменной[, имя_переменной, … ];

При определении переменных можно одновременно провести их инициализацию имя_переменной = значение

При записи в переменную нового значения старое стирается

Значение

Имя

Тип данных

Переменная – это ячейка в памяти компьютера, которая имеет имя (идентификатор) и хранит некоторое значение определенного типа.

Адрес памяти

Переменная

Объем памяти

Идентификаторы (имена)


Имена, использующиеся для переменных, функций, меток и других определяемых пользователем объектов, называются идентификаторами. В идентификаторе могут использоваться буквы латинского алфавита, цифры и знак подчеркивания "_", но он не может начинаться с цифры. Прописные и строчные буквы различаются. Идентификаторы не должны совпадать с ключевыми словами языка программирования.

Примеры идентификаторов

_code TEXT Text icon16_16 iCountPersonOfBase screen_width

Правильные и неправильные идентификаторы


Name

правильно

Имя

неправильно

12Z

неправильно

_12Z

правильно

dValue

правильно

B34_X

правильно

VAL_ПЕРЕМ

неправильно

__M2__

правильно

double

неправильно

abc&def

неправильно

Классификация типов данных С


Типы данных

Встроенные

Составные

Целочисленные

Вещественные

Массивы

Объединения

Структуры

Логический

Символьные

Перечисления

Логический тип данных


Тип данных bool (включен в С только начиная с С99)

Переменным типа bool могут быть присвоены только значения false или true, которые являются зарезервированными словами. Если переменной логического типа присвоено целое значение, то 0 интерпретируется как false, а значение, не равное нулю, как true. В памяти bool занимает 1 байт.

Пример кода

bool var1; //объявление переменной

var1 = false; //присвоение значения

//объявление и присвоение bool var2 = true; //инициализация

bool var3(true); //инициализация

var1 = var2; //присвоение значения

Целочисленные типы данных


Тип данных char

Переменным типа char могут быть присвоены целые значения. В памяти char занимает гарантированно 1 байт.

Модификаторы

Тип данных int

Переменным типа int могут быть присвоены целые значения. Размер занимаемой памяти зависит от платформы.

unsigned

signed

long

short

signed означает целое число со знаком, unsigned - целое без знака.

Для Win32/64 short задает размер 2 байта, int и long - 4 байта.

Тип данных char


1

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

unsigned char

char

Знаковый разряд (0 = +, 1 = -)

11111111 = 255

11111110 = 254

...

00000001 = 1

00000000 = 0

01111111 = 127 00000001 = 1

00000000 = 0

11111111 = -1

11111110 = -2

10000000 = -128

0

7

0

7

Тип данных short


1

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

unsigned short

short

Знаковый разряд (0 = +, 1 = -)

1111111111111111 = 65535

1111111111111110 = 65534

0000000000000010 = 2

0000000000000001 = 1

0000000000000000 = 0

0111111111111111 = 32767 0000000000000001 = 1

0000000000000000 = 0

1111111111111111 = -1

1000000000000000 = -32768

15

0

15

1

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

1

short

unsigned short

Тип данных long

1

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

long

Знаковый разряд (0 = +, 1 = -)

01111111111111111111111111111111 = 2147483647 = 231-1

10000000000000000000000000000000 = -2147483648 = -231

15

16

31

1

1

1

1

1

1

1

1

0

1

1

1

1

1

1

1

1

11111111111111111111111111111111 = 4294967295 = 232-1

10000000000000000000000000000000 = 2147483648 = 231

unsigned long

Сводная таблица целочисленных типов данных


Тип

Размер

Диапазон

bool

1

false, true

signed char

1

-128 … 127

unsigned char

1

0 … 255

signed short int

2

-32768 … 32767

unsigned short int

2

0 … 65535

signed long int

4

-231 … 231-1

unsigned long int

4

0 … 232-1

short = short int

long = long int

signed - по умолчанию

signed long long int

8

-263 … 263-1

unsigned long long int

8

0 … 264-1

unsigned = unsigned int

Целочисленные константы

Целочисленные константы могут записываться в десятичном, восьмеричном и шестнадцатеричном видах. Восьмеричные константы начинаются с префикса 0, шестнадцатеричные - с префиксов или . Для записи unsigned, long или long long констант могут использоваться соответственно следующие суффиксы: u, U, l, L, ll, LL.

Пример кода

int a = 15; int b = 015; //b = 13 int c = 0x15; //c = 21 int d = 0X15; //d = 21

unsigned long long u = 900000000001ull;

unsigned long long h = 0x8A40000000000010uLL;

Вещественные типы данных

Тип данных float

Переменным типа float могут быть присвоены вещественные значения в формате с плавающей точкой. В памяти float занимает 4 байта.

Тип данных double

Переменным типа double могут быть присвоены вещественные значения в формате с плавающей точкой. В памяти double занимает 8 байтов.

Тип данных long double

Переменным типа long double могут быть присвоены вещественные значения в формате с плавающей точкой. В памяти long double занимает 10 байтов.

Представление вещественных

типов данных

0

0

0

0

0

0

0

0

0

0

1

1

1

1

1

1

float

Знаковый разряд (0 = +, 1 = -)

0

0

0

0

0

0

0

0

1

1

1

1

0

0

0

0

0

15

31

16

порядок

мантисса

Число = (–1)знак*(1+мантисса)*2(порядок-127)

мантисса

2-1 + 2-2 + 2-3

Ответ: 1,875 = (1+0,875)*2(127-127)

Сводная таблица вещественных типов данных

Тип

float

Размер

Диапазон

4

3.4*10-38 … 3.4*1038

double

8

1.7*10-308 … 1.7*10308

long double

10

3.4*10-4932 … 3.4*104932

Точность

7

15

19

Точность чисел с плавающей точкой

123000 - 3 значащих цифры

0.045 - 2 значащих цифры

123000.045 - 9 значащих цифр

Вещественные константы

Вещественные константы включают десятичную точку либо могут использовать экспоненциальный формат (е или Е). Тип константы по умолчанию – double, с помощью модификаторов F или f можно задать константу типа float, а с помощью L или l – типа long double.

Пример кода

float a = 5.67F; float b = .25f; float c = 5.67e4F; float d = 2E-2F;

double e = 5.67; double f = 25.; double g = 5.67e4; long double h = 2.1234E-2L;

Символы. Кодирование символов

Тип данных char

Для представления символов используется тип данных char.

В памяти char занимает 1 байт.

‘0’ = 48

‘1’ = 49



‘A’ = 65

‘B’ = 66



‘a’ = 97

‘b’ = 98



Код ASCII

Расширенные кодировки символов

Символьные константы

Символьные константы состоят из одного символа, заключенного в апострофы. Тип константы – char. Для представления непечатаемых символов используются управляющие последовательности, начинающиеся с символа \ (обратный слэш).

Пример кода

char a = ’a’; //символ с кодом 97 char b = ’1’; //символ с кодом 49

char c = ’\t’; //табуляция (код 9)

char d = ’\r’; //курсор в начало строки код 13)

char e = ’\n’; //перевод строки (код 10)

char f = ’\062’;//символ '2' с кодом 50

char g = ’\”’; //символ ” (код 34)

char h = ’\’’; //символ ’ (код 39)

char i = ’\\’; //символ \ (код 92)

Строковые константы (литералы)

Строковые константы состоят из нескольких символов, заключенных в апострофы. Тип строковой константы – char*. Для представления непечатаемых символов используется комбинация, начинающаяся с символа \ (обратный слэш). В конце каждого строкового литерала компилятор добавляет нуль-терминатор '\0‘. Поэтому длина строки всегда на 1 байт больше количества символов в ее записи.

Пример кода

char* a = ”abcdef”; char* b = ”a”;

char* c = ””; // пустая строка

char* d = ”Вывод на терминал\r\n”;

char* e = ”Оценка \”отлично\””;

Определение размера типов данных

Пример кода

int i = sizeof(char);//для типа данных

int j = sizeof(i);

//для переменных () не обязательны

int k = sizeof j;

С помощью унарного оператора sizeof можно определить занимаемый в памяти размер в байтах для переменных или для типов данных. Значение оператора sizeof вычисляется во время компиляции и считается константой.

Если применяемые в программе алгоритмы ориентируются на размер типов данных, то в этом случае оператор sizeof помогает создавать переносимый код. Следует самостоятельно определить размер необходимого типа данных или переменной, а не использовать «стандартный».

Область видимости переменных

Каждая переменная имеет определенную область видимости, которая представляет участок программы, в рамках которого можно использовать данную переменную. Переменные бывают глобальными и локальными.
  • Локальные переменные могут объявляться внутри любого блока кода (например, внутри функции) и существуют от момента объявления до конца блока кода, в котором объявлены.
  • Глобальные переменные объявляются в файле программы вне любой из функций (вне блоков) и могут использоваться любой функцией из этого файла.

Внимание! По умолчанию локальные переменные инициализируются информационным мусором, а глобальные переменные нулем.

Сокрытие переменных

Пример кода

// глобальная переменная (гп)

double z; //по умолчанию в гп z значение 0.0

int main(){

// локальная переменная (лп)

int z; //по умолчанию в лп z информационный мусор

// лп z скрывает доступ к гп z

z = 10;

. . .

{ // новая лп на более глубоком уровне

// вложенности скрывает доступ

int z = 5;

cout << z; //выведет 5

}

}

Преобразование типов

Пример кода преобразования типов

double d = 76.56;

float i = d; //неявное преобразование

float j = (float)d;//явное преобразование(стиль С)

Конвертация значений из одного типа данных в другой называется преобразованием типов. Преобразование может быть явным или не явным. При неявном преобразовании компилятор автоматически конвертирует один фундаментальный тип данных в другой. При явном преобразовании программист использует один из операторов явного преобразования для выполнения конвертации объекта из одного типа данных в другой.

Потеря точности и потеря значения

Пример кода

double d = -76.56;

int i = d; //потеря точности

unsigned u = d; //потеря значения

float f = d; //потенциально опасное место

d = 1234567.89123;

f = d; //потеря точности

Преобразование типов – потенциально опасная операция, так как может привести либо к потери точности (потеря значащих цифр), либо к потере значения (полная потеря результата). Трудность нахождения ошибок, вызванных потерей точности или значения, обуславливается тем, что негативные последствия зависят не только от программного кода, но и от значения преобразуемых переменных.

Выбор типов данных

Элемент данных

char,

short, int, long

signed/unsigned

Число

Текст

char, char*

Целое

Вещественное

Диапазон, знак

Точность

float, double

Логический

bool


написать администратору сайта