[Powered by Google Translate] JORDAN JOZWIAK: тип литья, в простейшем смысле,
способ изменить интерпретацию компьютере некоторые данные
явно или неявно изменение его типа данных.
Такие, как изменение внутр с поплавком, или наоборот.
Чтобы понять, приведение типов, мы должны
Начнем с основы -
Данные типы самих себя.
В компьютерных языков, таких как C, все переменные имеют какой-то
от типа данных, который определяет, как компьютер, а также
Пользователь, интерпретирует эту переменную.
Численные типы данных, такие как INT, долго долго, плавать и
двойные, все они имеют свои собственные уникальные характеристики и
используются для определения значений различных диапазонов и точности.
Приведение типов позволяет нам принимать числа с плавающей точкой, как
3.14 и получить часть перед десятичной, 3 в данном случае,
путем приведения его к Int.
Давайте возьмем пример из английского языка для краткого
обзор типов и посмотреть, как приведение типа может измениться
Как мы интерпретировать элемент данных.
По данным, давайте символы здесь.
Я просто ссылаться на эти тщательно настроен линий
символы, но, как кто-то, кто знает английский язык,
Вы сразу признать, что они являются, по сути, букв.
Вы неявно понимается тип данных.
Глядя на эту строку букв, мы можем увидеть два
другими словами, каждый со своим собственным смыслом.
Там в существительное, ветер, как и в ветер дует снаружи.
И есть глагол, ветер, как и в Мне нужно, чтобы
ветер мой аналоговые часы.
Это интересный пример, потому что мы видим
как тип, который мы приписываем нашим данным, является ли существительное или
Глагол, изменения, как мы используем эти данные -
как ветер слово или ветра.
Хотя компьютер не заботится о грамматике и частей
английской речи, то же основной принцип применяется.
То есть, мы можем изменить интерпретацию точную
же данные, хранящиеся в памяти, просто приведения его к
различных типов.
Вот размеры наиболее распространенных типов на 32-разрядных
операционной системы.
У нас есть символ в 1 байт, Int и плавать на 4 байта, долго
долго и двойного на 8 байт.
Потому что Int занимает 4 байта, это займет 32 бит
, когда она хранится в памяти в виде двоичного серии
из нулей и единиц.
Пока наша переменная остается как типа INT,
компьютер всегда будет конвертировать эти нули и единицы из
двоичной в исходное число.
Тем не менее, мы теоретически могли бы бросить эти 32
Биты в серии логических типов.
И тогда компьютер больше не будет видеть номер, но
Вместо набора нулей и единиц.
Мы могли бы также попытаться прочитать, что данные в виде различных числовых
типа, или даже в виде строки из четырех символов.
Когда имеешь дело с числами в кастинге, необходимо рассмотреть, как
Точность ваши ценности будут затронуты.
Имейте в виду, что точность может остаться то же самое,
или вы можете потерять точность, но вы никогда не можете получить точность.
Давайте пройдемся по трем наиболее распространенных способов, которые вы можете
потеря точности.
Литье с плавающей точкой в ​​целое число вызовет усечение все
после запятой, так что вы оставили
с целого числа.
Если взять поплавок х, которая будет равна 3,7, мы можем бросить
эта переменная х в целое число путем простого написания Int в
скобки.
Всякий раз, когда мы используем этот термин здесь, мы будем эффективно
использовать три значения, потому что мы усеченном
все после запятой.
Мы также может конвертировать долго долго INT, который будет
Точно так же привести к потере высокого порядка битов.
Долго долго занимает 8 байт, или 64 бита в памяти.
Поэтому, когда мы бросили его в целое число которых только 4 байта или 32
битов, мы, по сути отрубив все биты,
представляют собой более высокие значения двоичного файла.
Вы могли бы также привести к двойным поплавком, который даст
Вы ближайший возможный плавающей точкой в ​​двойном без
обязательно округления его.
Как и в нашей долгой долго Int преобразования, потери в
Точность в том, что двойные содержит дополнительные данные.
Двойная позволит вам хранить 53 значащих бит,
примерно 16 значащих цифр.
В то время как поплавок будет только позволяют хранить 24
значащих бит, примерно в семь значащих цифр.
В этих последних двух случаях, это может быть полезно думать о
приведение типа, как изменение размера фото.
Когда вы идете от большого размера небольшого размера, вы не можете видеть
вещи, как четко, потому что вы потеряли данные
в виде пикселей.
Приведение типов также могут вызвать проблемы, когда мы
бросили целые поплавков.
Так как поплавки на 32-битной машине только есть 24
значащих бит, они не могут точно представлять значения
более чем 2 в степени 24, или 16777217.
Теперь давайте поговорим о явных и неявных литья.
Явное приведение, когда мы пишем типа в скобках
перед именем переменной.
Например, прежде чем мы писали Int в круглых скобках перед нашими
плавать переменной х.
Таким образом, мы получаем целочисленное значение,
усеченном значении 3,7 -
3.
Неявное приведение, когда компилятор автоматически изменяет
подобного типа в супер типа, или выполняет некоторые другие рода
литье не требуя от пользователя, чтобы написать
дополнительного кода.
Например, когда мы добавляем 5 и 1,1, наши ценности уже есть
Типы связанных с ними.
5 представляет собой целое число, в то время как 1.1 является поплавок.
Для того, чтобы добавить их, компьютер ставит под 5 в поплавком,
которые были бы то же самое, как написание 5,0 в
первое место.
Но этот путь мы говорим поплавком 5, или 5,0, плюс то, что уже было
поплавка, 1,1, и оттуда мы действительно можем добавить эти
ценности и получить значение 6.1.
Неявное приведение также позволяет назначить переменные
различных типов друг с другом.
Мы всегда можем назначить менее точный тип в более
точное один.
Например, если мы имеем двойную х, Int у -
и это может иметь любые значения, которые мы ставим их -
мы можем сказать, х = у.
Поскольку двойное имеет большую точность, чем INT, поэтому мы
не потерять любую информацию.
С другой стороны, это не обязательно будет правильным сказать,
У равна х, потому что двойные может иметь большее значение, чем
число.
И так целое, не могла бы вместить всех
Информация, хранящаяся в два раза.
Неявное приведение также используется в операторах сравнения, как
больше, меньше или оператора равенства.
Таким образом, мы можем говорить, если 5,1 больше, чем 5, и мы получаем
привести правда.
Потому что 5 является INT, но это будет приведен к поплавка для того, чтобы
можно сравнить с поплавком 5,1, мы бы сказали, 5.1,
более 5,0.
То же самое относится и говорю, если равна 2,0 равна 2.
Мы бы также получить истинное, потому что компьютер будет отбрасывать
целое число 2, чтобы плавать, а затем сказать равна 2,0 равна 2,0,
это правда.
Не забывайте, что мы также можем бросить между целыми и символов,
или ASCII значения.
Символы также должны быть сведены к двоичным, поэтому вы
можете легко конвертировать между символы и соответствующие им
ASCII значения.
Чтобы узнать больше об этом, ознакомьтесь с нашими видео на ASCII.
Когда вы берете время, чтобы думать о том, как данные хранится,
он начинает делать много смысла.
Это как разница между ветром и ветра.
Данные же, но вид может измениться, как мы
интерпретировать.
Меня зовут Джордан Jozwiak, это CS50.