Приведение числовых типов
Приведение числовых типов
В завершение нашего обзора операций приведения типов в C# заметим, что преобразование числовых типов подчиняется примерно таким же правилам. Чтобы поместить "больший" числовой тип в "меньший" (например, целое число int в byte), следует использовать явное приведение типов, которое информирует компилятор о том, что вы готовы принять возможную потерю данных.
// Если "х" больше предельного значения для byte, вероятна потеря
// данных, но из главы 9 вы узнаете о "контролируемых исключениях",
// с помощью которых можно управлять результатом.
int х = 6;
byte b = (byte)x;
Когда вы сохраняете "меньший" числовой тип в "большем" (например, byte в int), тип для вас будет преобразован неявно и автоматически, так как здесь нет потерь данных.
// Приведение типа не требуется,
// int достаточно "велик" для хранения byte.
byte b = 30; int x = b;
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Приведение типов и IUnknown
Приведение типов и IUnknown В предыдущей главе обсуждалось, почему необходимо определять тип на этапе выполнения в динамически собранной системе. Язык C++ предусматривает разумный механизм для динамического определения типа с помощью оператора dynamic_cast. Хотя эта языковая
10.2. Приведение формул к стандартной форме
10.2. Приведение формул к стандартной форме Как было показано в предыдущем разделе, формулы исчисления предикатов, записанные с использованием связок -› (импликация) и ‹-› (эквивалентность), могут быть переписаны лишь с использованием связок& (конъюнкция), # (дизъюнкция) и
R.3.6.3 Имена типов
R.3.6.3 Имена типов Основные и производные типы можно поименовать с помощью механизма typedef (§R.7.1.3), а семейство типов и функций можно задать и поименовать с помощью механизма шаблона типов
R.8.1 Имена типов
R.8.1 Имена типов Имя типа необходимо указывать при задании операции явного преобразования типа или в качестве параметра в операциях sizeof или new. Для этого служит конструкция имя-типа, которая синтаксически эквивалентна описанию объекта или функции этого типа, в котором
R.14.3 Эквивалентность типов
R.14.3 Эквивалентность типов Две конструкции шаблонное-имя-класса обозначают один и тот же класс, если в них совпадают имена шаблонов типа и значения указанных параметров. Например, в следующих описаниях x и y одного типа, который отличен от типа z:template‹class E, int size› class
R.18.3.4 Приведение указателей на функцию-член
R.18.3.4 Приведение указателей на функцию-член Указатель на функцию-член некоторого объекта можно привести к указателю на какую-то другую функцию, например (int (*) ())p-›f. Результирующий указатель будет настроен на функцию, вызов которой будет происходить с помощью обращения к
Безопасность типов
Безопасность типов Если вы лжете компилятору, он будет мстить. — Генри Спенсер (Henry Spencer) Всегда будут вещи, которые мы будем хотеть сказать в наших программах и которые трудно сформулировать на любом языке программирования. — Алан Перлис (Alan Perlis) Последней (не по
1.1. Типы числовых значений
1.1. Типы числовых значений Контекст математической точности для операций с точным значением включает типы данных с точным значением (DECIMAL и целочисленные типы) и числовые литералы с точным значением. Типы данных с приблизительным значением и числовые литералы все еще
Считывание числовых данных
Считывание числовых данных Многие программы включают считывание чисел, поэтому идеи, которые мы развиваем здесь, будут полезны везде. Общий вид первой части программы ясен: использовать цикл для считывания чисел до тех пор, пока все числа не будут считаны. Но в этом
4.14. Преобразования типов
4.14. Преобразования типов Представим себе следующий оператор присваивания:int ival = 0;// обычно компилируется с предупреждениемival = 3.541 + 3;В результате ival получит значение 6. Вот что происходит: мы складываем литералы разных типов – 3.541 типа double и 3 типа int. C++ не может
2.3.9 Эквивалентность типов
2.3.9 Эквивалентность типов Два структурных типа являются различными даже когда они имеют одни и те же члены. Например:struct s1 (* int a; *); struct s2 (* int a; *);есть два разных типа, поэтомуs1 x; s2 y = x; // ошибка: несоответствие типовСтруктурные типы отличны также от основных типов, поэтомуs1 x;
8.7 Имена Типов
8.7 Имена Типов Иногда (для неявного задания преобразования типов и в качестве параметра sizeof или new) нужно использовать имя тпа данных. Это выполняется при помощи «имени типа» которое по сути является описанием для объекта этого типа, в котором опущено имя объекта.имя_типа: