28.Что такое явное преобразование типов.
29.Что такое неявное преобразование типов.
30.Что такое сужающее преобразование типов.
31.Что такое расширяющее преобразование типов.
Другие языки программирования и технологии
Помогите с ответами пишет как работает но не для чего
Попробую объяснить на примерах 28, 29.
28)Предположим есть строковая переменная с символом "2". Вы пытаетесь прибавить еще одну строковую переменную и пусть это будет символ "3"(уточню что строковая переменная это массив символов, но один символ тоже является массивом из одного элемента). Большинство языков программирования предполагают, что если для строк используют знак плюс, то нужно выполнить конкатенацию строк (к первой строке в конце дописать вторую строку и результат положить в указанную переменную). Получим результат не 5, как возможно предполагалось, а "23". Именно для таких случаев, и не только, нужно явное преобразование типов (в данном случае из строчного в числовой тип).
29) Опишу одновременно вариант, который происходит, и на котором новички ловят ошибки. Предположим есть две целочисленные переменные int a = 7; int b = 3; И одна переменная с плавающей запятой (точкой) double result; При выполнении вот таких действий в си++ result = a/b; получим результат. При этом result будет равно ровно 2.0. Почему так происходит!? Потому что вначале выполняется целочисленная арифметика 7/2 при которой результат будет равен 2 и 1 в остатке. А потом это число неявно преобразуется в число с плавающей точкой. Вот это и есть неявное преобразование. Компилятор сам старается преобразовать переменные из одного типа в другой если есть такая возможность. Для того что бы получить правильный результат то нужно явно преобразовать целочисленные переменные в переменные с плавающей запятой:
result = double(a)/double(b);
28)Предположим есть строковая переменная с символом "2". Вы пытаетесь прибавить еще одну строковую переменную и пусть это будет символ "3"(уточню что строковая переменная это массив символов, но один символ тоже является массивом из одного элемента). Большинство языков программирования предполагают, что если для строк используют знак плюс, то нужно выполнить конкатенацию строк (к первой строке в конце дописать вторую строку и результат положить в указанную переменную). Получим результат не 5, как возможно предполагалось, а "23". Именно для таких случаев, и не только, нужно явное преобразование типов (в данном случае из строчного в числовой тип).
29) Опишу одновременно вариант, который происходит, и на котором новички ловят ошибки. Предположим есть две целочисленные переменные int a = 7; int b = 3; И одна переменная с плавающей запятой (точкой) double result; При выполнении вот таких действий в си++ result = a/b; получим результат. При этом result будет равно ровно 2.0. Почему так происходит!? Потому что вначале выполняется целочисленная арифметика 7/2 при которой результат будет равен 2 и 1 в остатке. А потом это число неявно преобразуется в число с плавающей точкой. Вот это и есть неявное преобразование. Компилятор сам старается преобразовать переменные из одного типа в другой если есть такая возможность. Для того что бы получить правильный результат то нужно явно преобразовать целочисленные переменные в переменные с плавающей запятой:
result = double(a)/double(b);
Нахер тебе писать как работать.
Похожие вопросы
- Помогите найти ошибку. Программа не работает. Пишет ELSE без IF. Не могу понять в чем дело.
- Помогите вывести ответ по условию, не получается его вывести, пожалуйста.
- Помогите! Как научиться писать логику в языке программирования?! Было ли у кого то такое? И как вы справились?
- Помогите найти ответ Что такое открытые (public) члены класса, и в чем заключаются особенности их использования?
- Помогите исправить код так, чтобы работал! :) (C#)
- Помогите. Не могу понять как работает поиск максимального элемента массива!!
- Помогите с ответами на вопросы (тест) по информатике
- Помогите пожалуйста.Почему оно не работает?(паскаль)
- Что конкретно пишут на языке Java? Над чем работают ?
- опрос по языкам програмирования кто работает програмистами и пишет программа ответьте на вопрос внутри