Visual studio типы данных

Обновлено: 03.07.2024

MicrosoftVisualStudio . NET - это интегрированная среда разработки для создания, документирования, запуска и отладки программ, написанных на языках . NET .

Платформа Framework. Net позволяет:

  • легко использовать компоненты, разработанных на различных языках;
  • разрабатывать единое приложение из нескольких частей на разных языках;
  • FCL (Framework Class Library) - библиотеку классов каркаса;
  • CLR (Common Language Runtime) - общеязыковую исполнительную среду.

Платформа . NET предоставляет в распоряжение программиста библиотеку базовых классов, доступную из любого языка программирования . NET . Поскольку число классов библиотеки FCL достигает нескольких тысяч, то в целях структуризации функционально близкие классы объединяются в группы, называемые пространством имен ( Namespace ).

Основным пространством имен библиотеки FCL является пространство System , содержащее как классы, так и другие вложенные пространства имен. Например, в пространстве System.Collections находятся классы и интерфейсы, поддерживающие работу с коллекциями объектов - списками, очередями, словарями. Пространство System.Windows.Forms содержит классы, используемые при создании windows -приложений.

В большинстве случаев между двоичным файлом . NET и сборкой существует отношение " один-к-одному ". Однако сборка может состоять как из одного, так и из нескольких двоичных файлов.

Сборка из одного файла содержит и манифест , и метаданные , и инструкции IL.

Двоичные файлы, образующие совместно общую сборку называются модулями. При этом один из двоичных файлом должен содержать манифест сборки. Остальные модули могут содержать только метаданные типов и инструкции IL.

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

Для разработки приложений в Visual Studio. Net используются проекты.

Проект ( Project ) - это основная единица , с которой имеет дело разработчик. Сначала он должен выбрать тип проекта, после чего Visual Studio создает каркас проекта в соответствии с выбранным типом. Проект состоит из классов, собранных в одном или нескольких пространствах имен. Пространства имен ( Namespaces ) позволяют структурировать проекты, содержащие большое число классов , объединяя в одну группу близкие классы.

Несколько проектов могут объединяться в решение (Solution), которое также может включать ресурсы, необходимые этим проектам.

С точки зрения разработчика конечным результатом его работы, получаемым после компиляции исходного программного кода, является решение, а с точки зрения CLR (Common Language Runtime - общеязыковой среды исполнения) – сборка ( assembly ), содержащая PE файл , т.е. модуль в формате исполняемого файла PE ( Portable Executable) для 32-разрядной ОС Windows либо DLL ( Dynamic Link Library ) файл .

Visual Studio. Net предлагает большое разнообразие возможных типов проектов.

Стандарт языка C++ включает следующий набор фундаментальных типов.

  • Логический тип ( bool ).
  • Символьный тип ( char ).
  • Целые типы. Они могут отличаться размером: short , int , long , а также могут быть знаковыми ( signed ) или беззнаковыми ( unsigned ).
  • Типы с плавающей точкой. Они также могут отличаться размерами: float , double и long double .

Тип void указывает на отсутствие информации.

К конструируемым типам относятся следующие:

  • Указатели (например, char* ).
  • Ссылки (например, char& ).
  • Массивы (например, char[] ).

Также язык позволяет разработчику конструировать собственные типы:

  • Перечислимые типы ( enum ).
  • Структуры ( struct ).
  • Классы.
  • Типы-значения ( value ).
  • Ссылочные ( reference ).
  • Указатели ( pointer ).
  • Тип void .

Для ссылочного типа значение задает ссылку на область памяти в "куче" ( heap ), где расположен соответствующий объект . Для типа-значения значением являются собственно данные, а память для них выделяется в стеке.

Логический , арифметический, структуры, перечисление относятся типам-значениям. Массивы, строки и классы относятся к ссылочным типам.

И ссылочные, и обычные типы являются производными от базового класса object . В тех случаях, когда обычный тип должен вести себя как объект , создается оболочка ( wrapper ), которую можно рассматривать как ссылочный объект , помещенный в кучу, и в нее копируется значение переменной обычного типа. Оболочка автоматически помечается таким образом, что система знает, какое значение она содержит. Этот процесс назывется упаковкой ( boxing ), а обратный процесс - распаковкой ( unboxing ).

Упаковка происходит автоматически, для этого нужно только присвоить значение обычного типа переменной типа object . Упаковка и распаковка позволяют обрабатывать любой тип как объект . Например, в выражении

целое число 3 упаковывается путем вызова функции Int32.ToString() .

Описание класса имеет следующий синтаксис :

В теле класса могут быть объявлены:

  • константы;
  • поля;
  • конструкторы и деструкторы;
  • методы;
  • события;
  • делегаты;
  • классы (структуры, интерфейсы, перечисления).

Поля класса синтаксически являются обычными переменными (объектами) языка. Их описание удовлетворяет обычным правилам объявления переменных. Поля характеризуют свойства объектов класса.

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

Конструктор представляет собой специальный метод класса , позволяющий создавать объекты класса. Его имя должно совпадать с именем класса. Если разработчик не определяет конструктор класса , то к классу автоматически добавляется конструктор по умолчанию - конструктор без аргументов.

В C++ определены следующие основные целочисленные типы данных:

Эти типы данных представляют значения из множества целых чисел. Например:

Типы данных, которые начинаются с приставки unsigned , могут содержать только положительные числа.

Данные типа short int , unsigned short int занимают в два раза меньше места в памяти чем данные типа int , unsigned int . В последних версиях компилятора данные типа short int занимают 2 байта.

В более ранних версиях компиляторов данные типа long , unsigned long занимают в 2 раза больше места в памяти, чем данные типа int , unsigned int . В последних версиях компиляторов данные типа int ( unsigned int ) занимают такое же место в оперативной памяти как и данные типа long ( unsigned long ).

Данные типа long long ( unsigned long long ) занимают в 2 раза больше места в памяти чем данные типа long ( unsigned long ).

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

Результат выполнения программы:

Проанализировав результат, можно сделать вывод, что в ранних версиях компиляторов:

  • переменные типов short int и unsigned short int занимают 2 байта;
  • переменные типов int , unsigned int , long ( long int ), unsigned long ( unsigned long int ) занимают 4 байта;
  • переменные типов long long ( unsigned long long ) занимают 8 байт.

3. Как в программе описать переменную с именем x целого типа?

Ответ:

В результате под переменную x будет выделено место в памяти размером 4 байта. Размер памяти, которая выделяется под переменную зависит от характеристик компьютера, типа операционной системы и настроек компилятора.

4. Как в переменную целого типа записать число 239?

Ответ 1. Внесение числа в переменную после ее описания.

Ответ 2. Внесение числа в переменную во время ее описания (начальная инициализация).

5. Какие особенности типов данных с плавающей запятой?

Типы данных с плавающей запятой разрешают представлять значения из множества вещественных чисел. Например:

В C++ есть следующие базовые типы данных с плавающей запятой: float , double , long double .

Переменная типа double занимает в 2 раза больше места в памяти компьютера чем переменная типа float .

Так же переменная типа long double занимает в 2 раза больше места в памяти компьютера, чем переменная типа double .

6. Как описать переменную, которая принимает значение с плавающей запятой?

Пример описания переменных типа float , double , long double :

7. Как в переменную с плавающей запятой записать числовые значения?

Пример внесения числовых данных в переменные типы с плавающей запятой:

8. Как перевести переменную типа float в тип int ?

Для этого используется операция приведения типов. В скобках нужно указать название типа к которому происходит приведение.

При использовании операций приведения типов, нужно учитывать ограничения, которые накладываются на типы, которые занимают меньше места в памяти компьютера.

Например, переменная типа short int может представлять меньший диапазон чисел, чем переменные типов float , double . В следующему листинге происходит переполнение значения в переменной типа short int :

9. Как перевести переменную из типа int в тип double ?

Пример приведения с int в double :

10. Какие особенности использования данных типа char (символьных данных) в программе?

Данные типа char представляют символьное значение кода, введенного с клавиатуры. Код символа есть целое число.

Фрагмент кода, в котором вычисляется код символа:

Данные типа char есть теми же целыми числами. Данные типа char занимают в памяти компьютера 1 байт.

Символы с кодами от 128 до 255 – это региональные символы, которые привязанные к конкретной азбуке того компьютера на котором установленная операционная система Windows.

11. Какие особенности использования данных типа bool (логический тип)?

Переменные типа bool могут принимать только два значения:

Эти переменные используются для проверки логических выражений. Числовое значение true равно 1 . Числовое значение false равно 0 .

Фрагмент кода, который определяет числовые значения true и false :

Фрагмент кода, который превращает типы int и float в bool :

12. Как определить размер памяти, который занимает переменная данного типа?

Для этого используется операция sizeof() .

Фрагмент кода, который определяет размер некоторых типов данных:

13. Каким образом осуществляется инициализация переменных разных типов?

14. Каким образом определить максимально допустимое (минимально допустимое) значение переменной определенного типа?

Примеры определения предельных значений переменных разных типов.

Для переменных типа int :

Для переменных типа short int :

Для переменных типа unsigned int :

Для переменных типа float :

Для переменных типа double :

Для переменных типа char :

15. Какие особенности использования типа enum ?

Тип enum – это перечислительный тип данных. В нем задаются мнемонические значения для множеств целых значений. Каждое мнемоническое значение имеет определенное содержание и представляется целым числом.

Пример использования типа enum для обозначения месяцев года:

Итак, с помощью типа enum , в тексте программы можно использовать мнемонические обозначения для лучшей наглядности исходного кода.

Можно написать и так:

16. Какие особенности применения типа void в программах на C++ ? Указатель на void

Тип данных void используется в следующих случаях:

  • если нужно описать функцию, которая не возвращает никакого значения (см. пример 1);
  • если нужно описать функцию, которая не получает параметров (см. пример 1);
  • когда нужно объявить указатель на void , который может взаимодействовать с указателями на другие типы (смотрите пример 2). В данном случае указатель на void может быть приведен к типу указателя на любой другой тип ( int* , float* , double* и т.д.).

Пример 1. Функция MyFun() без параметров, которая не возвращает никакого значения (возвращает тип void ) и не получает параметров.

Пример 2. В примере демонстрируются некоторые особенности использования указателя на void .

Результат выполнения программы

17. Можно ли объявлять переменную типа void в программе?

Однако можно объявить указатель на void .

18. Какие особенности применения типа wchar_t в Visual C++ ?

Тип wchar_t используется для сохранения символов, которые входят в состав больших символьных наборов. Например, в китайской азбуке есть огромное количество символов. 8 разрядов недостаточно, чтобы представить весь набор символов китайской азбуки. Поэтому, если нужно использовать программу на международном рынке, целесообразно заменить тип char на wchar_t .

Пример использования типа wchar_t .

19. Какой объем памяти резервируется для описания одной переменной типа wchar_t ?

Одна переменная типа wchar_t занимает в памяти компьютера 2 байта (16 бит). Диапазон целочисленных значений переменных типа wchar_t составляет от 0 до 65535.

20. Как определить, какое максимальное (минимальное) значение может содержать переменная целочисленного или символьного типа? Константы INT32_MIN , INT32_MAX и другие

Значения, которые может получить переменная целого или символьного типа, определяется количеством разрядов, которые определены компилятором для представления этого типа в памяти.

Например, если переменная целого типа занимает 2 байта (16 бит), то диапазон допустимых значений может быть следующим:

В C++ существуют средства для определения минимального и максимального значения, которое может принимать переменная целочисленного или символьного типа. В библиотеку C++ входит модуль <limits.h> , который содержит описание соответствующих констант. Эти константы можно использовать в программах при перехвате различных исключительных ситуаций, например, переполнение, выход за допустимые пределы индекса в массиве и т.д.

Например, чтобы сравнить значение переменной типа int на максимум, можно использовать константу INT32_MAX по следующему образцу

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

Эти типы сохраняются в разных местах памяти: типы значений сохраняются в области, известной как стек, а ссылочные типы — в области, называемой управляемой кучей.

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

Давайте разберем типы значений.

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

Отрицательные числа практически всегда представляются методом дополнения до двух, в соответствии с которым все двоичные разряды отрицательного числа сначала инвертируются, а затем к этому числу добавляется 1.

Вероятно, самым распространенным в программировании целочисленным типом является тип int. Переменные типа int нередко используются для управления циклами, индексирования массивов и математических расчетов общего назначения. Когда же требуется целочисленное значение с большим диапазоном представления чисел, чем у типа int, то для этой цели имеется целый ряд других целочисленных типов.

Так, если значение нужно сохранить без знака, то для него можно выбрать тип uint, для больших значений со знаком — тип long, а для больших значений без знака — тип ulong. В качестве примера ниже приведена программа, вычисляющая расстояние от Земли до Солнца в сантиметрах. Для хранения столь большого значения в ней используется переменная типа long:

Всем целочисленным переменным значения могут присваиваться в десятичной или шестнадцатеричной системе обозначений. В последнем случае требуется префикс 0x:

Если возникает какая-то неопределенность относительно того, имеет ли целое значение тип int, uint, long или ulong, то по умолчанию принимается int. Чтобы явно специфицировать, какой другой целочисленный тип должно иметь значение, к числу можно добавлять следующие символы:

U и L можно также указывать в нижнем регистре, хотя строчную L легко зрительно спутать с цифрой 1 (единица).

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

Тип данных float предназначен для меньших значений с плавающей точкой, для которых требуется меньшая точность. Тип данных double больше, чем float, и предлагает более высокую степень точности (15 разрядов).

Если нецелочисленное значение жестко кодируется в исходном тексте (например, 12.3), то обычно компилятор предполагает, что подразумевается значение типа double. Если значение необходимо специфицировать как float, потребуется добавить к нему символ F (или f):

Десятичный тип данных

Для представления чисел с плавающей точкой высокой точности предусмотрен также десятичный тип decimal, который предназначен для применения в финансовых расчетах. Этот тип имеет разрядность 128 бит для представления числовых значений в пределах от 1Е-28 до 7,9Е+28. Вам, вероятно, известно, что для обычных арифметических вычислений с плавающей точкой характерны ошибки округления десятичных значений. Эти ошибки исключаются при использовании типа decimal, который позволяет представить числа с точностью до 28 (а иногда и 29) десятичных разрядов. Благодаря тому что этот тип данных способен представлять десятичные значения без ошибок округления, он особенно удобен для расчетов, связанных с финансами:

Результатом работы данной программы будет:

Использование типа decimal

Символы

Для того чтобы присвоить значение символьной переменной, достаточно заключить это значение (т.е. символ) в одинарные кавычки:

Наравне с представлением char как символьных литералов, их можно представлять как 4-разрядные шестнадцатеричные значения Unicode (например, '\u0041'), целочисленные значения с приведением (например, (char) 65) или же шестнадцатеричные значения (например, '\x0041'). Кроме того, они могут быть представлены в виде управляющих последовательностей.

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

К данным относится любая информация, представленная в таком виде, который позволяет автоматизировать её сбор, хранение и обработку в ЭВМ (числа, символы, биты и др.).
Данные в программе могут быть исходными (задаваемыми на входе программы) или результатами обработки (промежуточными или выходными).
Все данные - переменные и константы - принадлежат определенному типу.
С каждым типом данных связан свой диапазон значений ( количество байт под одно значение) и допустимые операции.


  1. void (пустой тип),
  2. int (целый тип),
  3. float (вещественные числа с плавающей точкой),
  4. double (вещественные числа с плавающей точкой двойной точности),
  5. char (символьный тип),
  6. bool - логический.

Составные типы

  1. short - короткий;
  2. long - длинный;
  3. signed-знаковый;
  4. unsigned-беззнаковый.
  • массивы,
  • функции,
  • классы,
  • указатели,
  • ссылки,
  • структуры ,
  • объединения.

Символьный тип

Целочисленный тип

Данные типа int в памяти компьютера могут занимать либо 2, 4 или 8 байт. Это зависит от разрядности процессора.
По умолчанию все целые типы считаются знаковыми, то есть спецификатор signed (знаковый ) можно не указывать.
Спецификатор unsigned (беззнаковый) позволяет представлять только положительные числа.

Диапазоны значений целочисленных типов

Тип данных Диапазон значений Размер(байт)
int
signed int
signed long int
-2147483648 . 2147483647 4
unsigned int
unsigned long int
0 . 4294967295 4
short int
signed short int
-32768 . 32767 2
unsigned short int 0. 65535 2
long long int \(-(2^-1). (2^-1)\) 8
unsigned long
long int
\(0. (2^-1)\) 8

Вещественный тип

Диапазоны значений вещественных типов

Логический тип

Переменная типа bool может принимать только два значения true (истина) или false (ложь). Любое значение, не равное нулю, интерпретируется как true, а при преобразовании к целому типу принимает значение, равное 1. Значение false представлено в памяти как 0.

Читайте также: