Перейти к содержимому

Как обозначаются целочисленные данные

  • автор:

Целочисленные типы (справочник по C#)

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

Характеристики целочисленных типов

C# поддерживает следующие предварительно определенные целочисленные типы:

Ключевое слово или тип C# Диапазон Size Тип .NET
sbyte От -128 до 127 8-разрядное целое число со знаком System.SByte
byte От 0 до 255 8-разрядное целое число без знака System.Byte
short От −32 768 до 32 767 16-разрядное целое число со знаком System.Int16
ushort От 0 до 65 535 16-разрядное целое число без знака System.UInt16
int От −2 147 483 648 до 2 147 483 647 32-разрядное целое число со знаком System.Int32
uint От 0 до 4 294 967 295 32-разрядное целое число без знака System.UInt32
long От −9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 64-разрядное целое число со знаком System.Int64
ulong От 0 до 18 446 744 073 709 551 615 64-разрядное целое число без знака System.UInt64
nint Зависит от платформы (вычисляемой во время выполнения) 32- или 64-разрядное целое число со знаком System.IntPtr
nuint Зависит от платформы (вычисляемой во время выполнения) 32- или 64-разрядное целое число без знака System.UIntPtr

Во всех строках таблицы, кроме двух последних, каждое ключевое слово типа C# из крайнего левого столбца является псевдонимом для соответствующего типа .NET. Ключевое слово и имя типа .NET являются взаимозаменяемыми. Например, следующие объявления объявляют переменные одного типа:

int a = 123; System.Int32 b = 123; 

Типы nint и nuint в последних двух строках таблицы являются целыми числами собственного размера. Для определения целых чисел собственного размера можно использовать nint и nuint ключевое слово. Эти целые числа будут 32-разрядными при использовании в 32-битных процессах и 64-разрядными при использовании в 64-битных процессах. Их можно использовать для сценариев взаимодействия, с низкоуровневыми библиотеками и для оптимизации производительности в сценариях, где часто выполняются математические операции с целыми числами.

Целочисленные типы собственного размера представляются внутренне как типы .NET System.IntPtr и System.UIntPtr. Начиная с C# 11, и nint nuint типы являются псевдонимами для базовых типов.

По умолчанию все целочисленные типы имеют значение 0 .

Каждый из целочисленных типов имеет MinValue и MaxValue свойства, обеспечивающие минимальное и максимальное значение этого типа. Эти свойства являются константами во время компиляции, за исключением случаев собственных типов ( nint и nuint ). MaxValue Свойства MinValue вычисляются во время выполнения для собственных типов. Размеры этих типов зависят от параметров процесса.

Используйте структуру System.Numerics.BigInteger, чтобы представить целое число со знаком без верхней и нижней границ.

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

Целочисленные литералы могут быть:

  • десятичным числом: без префикса;
  • шестнадцатеричным числом: с префиксом 0x или 0X ;
  • binary: с 0b префиксом или 0B префиксом

В приведенном ниже коде показан пример каждого из них.

var decimalLiteral = 42; var hexLiteral = 0x2A; var binaryLiteral = 0b_0010_1010; 

В предыдущем примере также показано использование _ в качестве разделителя цифр. Цифровой разделитель можно использовать со всеми видами числовых литералов.

Тип целочисленного литерала определяется его суффиксом следующим образом:

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

Примечание. Литералы интерпретируется как положительные значения. Например, литерал 0xFF_FF_FF_FF представляет число 4294967295 типа uint , хотя он имеет то же битовое представление, что и число -1 типа int . Если вам требуется значение определенного типа, приведите литерал к этому типу. Используйте оператор unchecked , если представить значение литерала в целевом типе невозможно. Например, unchecked((int)0xFF_FF_FF_FF) выдает -1 .

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

Если значение, представленное целочисленным литералом, превышает UInt64.MaxValue, происходит ошибка компиляции CS1021.

Если определенный тип целочисленного литерала — int , а значение, представленное литералом, находится в диапазоне целевого типа, значение можно неявно преобразовать в sbyte , byte , short , ushort , uint , ulong , nint или nuint :

byte a = 17; byte b = 300; // CS0031: Constant value '300' cannot be converted to a 'byte' 

Как показано в предыдущем примере, если значение литерала не находится в диапазоне конечного типа, возникает ошибка компилятора CS0031 .

Можно также использовать приведение для преобразования значения, представленного целочисленным литералом, в тип, отличный от определенного типа литерала:

var signedByte = (sbyte)42; var longVariable = (long)42; 

Преобразования

Любой целочисленный тип можно преобразовать в любой другой целочисленный тип. Если целевой тип может хранить все значения исходного типа, преобразование является неявным. В противном случае необходимо использовать выражение приведения для выполнения явного преобразования. Для получения дополнительной информации см. статью Встроенные числовые преобразования.

Целые числа собственного размера

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

    Чтобы узнать размер целого числа собственного размера во время выполнения, используйте sizeof() . Но код должен компилироваться в контексте unsafe. Например:

Console.WriteLine($"size of nint = "); Console.WriteLine($"size of nuint = "); // output when run in a 64-bit process //size of nint = 8 //size of nuint = 8 // output when run in a 32-bit process //size of nint = 4 //size of nuint = 4 
Console.WriteLine($"nint.MinValue = "); Console.WriteLine($"nint.MaxValue = "); Console.WriteLine($"nuint.MinValue = "); Console.WriteLine($"nuint.MaxValue = "); // output when run in a 64-bit process //nint.MinValue = -9223372036854775808 //nint.MaxValue = 9223372036854775807 //nuint.MinValue = 0 //nuint.MaxValue = 18446744073709551615 // output when run in a 32-bit process //nint.MinValue = -2147483648 //nint.MaxValue = 2147483647 //nuint.MinValue = 0 //nuint.MaxValue = 4294967295 
  • для nint : Int32.MinValue–Int32.MaxValue.
  • для nuint : UInt32.MinValue–UInt32.MaxValue.
nint a = 42 nint a = (nint)42; 

Спецификация языка C#

Дополнительные сведения см. в следующих разделах статьи Спецификация языка C#:

  • Целочисленные типы
  • Целочисленные литералы
  • Целочисленные типы собственного размера
  • C# 11 — числовой IntPtr и UIntPtr

См. также

  • справочник по C#
  • Типы значений
  • Типы с плавающей запятой
  • Строки стандартных числовых форматов
  • Числовые значения в .NET

Совместная работа с нами на GitHub

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

Целые типы

Во Free Pascal определен ряд целых типов, различающихся между собой объемом отводимой под данные памяти. Чем больше памяти отводится, тем больший диапазон значений может принимать переменная данного типа.

На практике часто используется целочисленный тип integer, под который в зависимости от платформы отводится 2 или 4 байта.

Примеры часто используемых целых типов в Pascal

Тип Диапазон допустимых значений Отводимая память, в байтах
shortint -128…127 1
integer -32 768…32 767 2
longint -2 147 483 648…2 147 483 647 4
byte 0…255 1
word 0…65 535 2

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

Целочисленные переменные в программе описываются следующим образом:

a, b, c: integer;

Здесь a , b , c — имена переменных, integer – тип переменных.

Операции над целыми типами, дающие в результате значение целого типа:

Знак операции Операция
+ Сложение
Вычитание
* Умножение
div Целочисленное деление (остаток отбрасывается). Деление без округления (целая часть частного).
mod Деление по модулю (выделение остатка от деления). Остаток от деления: a mod b = a – ((a div b) * b) .

Пример. Пусть a = 17, b = 5. Тогда a div b дает 3, a mod b дает 2 (остаток от деления).

var a, b: integer; begin a := 17; b := 5; writeln(a div b); writeln(a mod b); end.

Операции над операндами целого типа выполняются правильно только при условии, что результат и каждый операнд не меньше минимального (крайнего левого) и не больше максимального (крайнего правого) значений диапазона. Например, в Паскале существует константа maxint, в которой содержится максимально допустимое значение для типа integer. Тогда при выполнении операций в программе должны соблюдаться следующие условия:

Над целыми типами, как и многими другими, допустимы операции отношения (сравнения). Результат таких операций относится к типу boolean и может принимать одно из двух значений – либо true (истина), либо false (ложь).

Операции отношения

Знак операции Операция
= Равно
<> Не равно
>= Больше или равно
> Больше
Меньше или равно
Меньше

Целые типы могут приниматься в качестве фактических параметров рядом стандартных функций языка программирования Pascal.

Стандартные функции Pascal, применимые к аргументам целых типов

Функция Тип результата Результат выполнения
abs(x) Целый Модуль x (абсолютная величина x)
sqr(x) Целый Квадрат x
succ(x) Целый Следующее значение x (x+1)
pred(x) Целый Предыдущее значение x (x-1)
random(x) Целый Случайное целое число из интервала 0..x-1.
sin(x) Действительный Синус x (угол в радианах)
cos(x) Действительный Косинус x (угол в радианах)
arctan(x) Действительный Арктангенс x (угол в радианах)
ln(x) Действительный Натуральный логарифм x
exp(x) Действительный Экспонента x
sqrt(x) Действительный Квадратный корень из x
odd(x) Логический Значение true, если x – нечетное число; false – если четное.

Функция random возвращает равномерно распределенное случайное целое число, если ей передан целый аргумент. При повторном запуске программы она возвращает те же значения. Во избежание этого следует в начале программы вызвать процедуру без параметров randomize .

Процедуры inc и dec могут иметь по одному или по два параметра целого типа (первый параметр всегда должен быть переменной, то есть число должно передаваться через переменную). Если параметров два, то значение первого увеличивается (для inc ) или уменьшается (для dec ) на величину, равную значению второго параметра. Например, inc(x, 2) равнозначно x + 2 . Если параметр один, то его значение увеличивается (для inc ) или уменьшается (для dec ) на единицу. Например, dec(x) равнозначно x-1 .

Процедуры inc и dec изменяют значение переданной в них переменной, они ничего не возвращают в программу. Это их важное отличие от функций succ и pred .

var i, j: integer; begin i := 43; inc(i); j := succ(i); writeln('i = ', i); writeln('j = ', j); dec(i, 3); j := pred(i); writeln('i = ', i); writeln('j = ', j); end.
 i = 44 j = 45 i = 41 j = 40

Следующие функции принимают в качестве аргументов значения вещественного типа, а возвращают значения целого типа:

trunc(x) – отбрасывание десятичных знаков после точки;
round(x) – округление до целого.

x = 4.7389. Тогда trunc(x) дает 4, round(x) дает 5.

var x: real; begin x := 4.7389; writeln(trunc(x)); writeln(round(x )); end.

ИНФОРМАТИКА 1.1.

Целью курса «Информационные технологии» является обучение студентов программированию с применением методов вычислительной математики, использованием современных средств вычислительной техники и компьютерных технологий, дальнейшее развитие компьютерной грамотности на основе дисциплин «Информатика», «Математика», «Начертательная геометрия и инженерная графика», «Физика».

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

Язык Турбо Паскаль является классическим языком программирования, широко применяемым в инженерных расчётах. Его изучение позволяет сформировать у студентов особый вид мышления – алгоритмический. Студентам, успешно овладевшим этим языком, не составит особого труда в будущей своей трудовой деятельности применять свои знания и составлять программы не только на языке Паскаль, но и на других языках программирования. Особенно важным является то, что знание языка Паскаль нужно для составления программ в среде Windows при помощи прикладного пакета Delphi, всё более популярного в последнее время.

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

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

3. Типы данных, используемые в языке Паскаль

1. Целочисленный . Обозначается как integer . В данный тип данных входят числовые значение в диапазоне [ − 32768 . 32767 ] . В памяти компьютера для хранения таких данных отводится \(2\) байта со знаком.

2. Вещественный . Обозначается как real . Диапазон данных: 2 . 9 ∗ 10 − 39 . 1 . 7 ∗ 10 + 38 . Занимает \(6\) байтов в памяти компьютера.

3. Символьный . Обозначается как char . Значением переменной этого типа может быть любой символ алфавита. В памяти компьютера такая переменная займёт \(1\) байт.

4. Логический . Обозначается как boolean . Данный тип данных может принимать только два значения: истина или ложь .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *