Преобразование типов в выражениях



 

Если в выражении смешаны различные типы литералов и переменных, компилятор преобразует их к одному типу. Во‑первых, все char ‑ и short int ‑значения автоматически преобразуются (с расширением "типоразмера") к типу int . Этот процесс называется целочисленным расширением (integral promotion). Во‑вторых, все операнды преобразуются (также с расширением "типоразмера") к типу самого большого операнда. Этот процесс называется расширением типа (type promotion), причем он выполняется по операционно. Например, если один операнд имеет тип int , а другой – long int , то тип int расширяется в тип long int . Или, если хотя бы один из операндов имеет тип double , любой другой операнд приводится к типу double . Это означает, что такие преобразования, как из типа char в тип double , вполне допустимы. После преобразования оба операнда будут иметь один и тот же тип, а результат операции – тип, совпадающий с типом операндов.

Рассмотрим, например, преобразование типов, схематически представленное на рис. 3.1. Сначала символ ch подвергается процессу "расширения" типа и преобразуется в значение типа int . Затем результат операции ch/i приводится к типу double , поскольку результат произведения f*d имеет тип double . Результат всего выражения получит тип double , поскольку к моменту его вычисления оба операнда будут иметь тип double .

 

Преобразования, связанные с типом bool

 

Как упоминалось выше, значения типа bool автоматически преобразуются в целые числа 0 или 1 при использовании в выражении целочисленного типа. При преобразовании целочисленного результата в тип bool нуль преобразуется в false, а ненулевое значение – в true. И хотя тип bool относительно недавно был добавлен в язык C++, выполнение автоматических преобразований, связанных с типом bool, означает, что его введение в C++ не имеет негативных последствий для кода, написанного для более ранних версий C++. Более того, автоматические преобразования позволяют C++ поддерживать исходное определение значений ЛОЖЬ и ИСТИНА в виде нуля и ненулевого значения. Таким образом, тип bool очень удобен для программиста.

 

Приведение типов

 

В C++ предусмотрена возможность установить для выражения заданный тип. Для этого используется операция приведения типов (cast). C++ определяет пять видов таких операций. В этом разделе мы рассмотрим только один из них, а остальные четыре описаны ниже в этой книге (после темы создания объектов). Итак, общий формат операции приведения типов таков:

 

 

Здесь элемент тип означает тип, к которому необходимо привести выражение . Например, если вы хотите, чтобы выражение х/2 имело тип float , необходимо написать следующее:

 

 

Приведение типов рассматривается как унарный оператор, и поэтому он имеет такой же приоритет, как и другие унарные операторы.

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

 

 

Без оператора приведения типа (float) выполнилось бы только целочисленное деление. Приведение типов в данном случае гарантирует, что на экране будет отображена и дробная часть результата.

 

Использование пробелов и круглых скобок

 

Любое выражение в C++ для повышения читабельности может включать пробелы (или символы табуляции). Например, следующие два выражения совершенно одинаковы, но второе прочитать гораздо легче.

 

 

Круглые скобки (так же, как в алгебре) повышают приоритет операций, содержащихся внутри них. Использование избыточных или дополнительных круглых скобок не приведет к ошибке или замедлению вычисления выражения. Другими словами, от них не будет никакого вреда, но зато сколько пользы! Ведь они помогут прояснить (для вас самих в первую очередь, не говоря уже о тех, кому придется разбираться в этом без вас) точный порядок вычислений. Скажите, например, какое из следующих двух выражений легче понять?

 


Дата добавления: 2018-09-22; просмотров: 304; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!