![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Преобразование типов
Галинка © (2008-07-04 10:06:00)Как происходит сия славная операция? Т.е. понятно, что можно просто написать типа char t; int tt = (int)t; Но как происходит само преобразование?
Правильный-Вася (2008-07-04 10:52:00) [21]
> Evgeny V © (04.07.08 10:41) [6]
unsigned и signed явно можно задать
Evgeny V (2008-07-04 10:41:00) [22]
> Галинка (04.07.08 10:37) [5]
Для языка си (пример же ты на нем вроде дала) тип char преобразуется в тип int c расширением знака. То есть, если сhar был отрицательный, то и int будет отрицательный.
Галинка (2008-07-04 10:37:00) [23]MsGuns © (04.07.08 10:27) [3]
вот с этого места подробней. Т.е. вот например тот же пример с символом и целым. Т.е. строго говоря у нас два байта и знак не учитывается. Но мы говорим, что эти данные надо рассматривать как четыре байта с учетом знака. Вот и интересно как это происходит.
MsGuns (2008-07-04 10:28:00) [24]Вообще-то я немного соврал - кое-что конечно появляется, например загрузки в регистры или стэки
MsGuns (2008-07-04 10:27:00) [25]Сия "операция" никак не выполняется потому как нету этой самой операции. Приведение типа лишь указывает компиллятору "схему" для вычислений смещений адресов относительно "базы". Т.е. на "выходе" как бы ничего нет, кроме корректно вычисленных смещений в адресах
Palladin (2008-07-04 10:23:00) [26]
> ну и в delphi, кстати, integer к char ты не приведешь,
просшу просчения вру безбожно... размеры касаются записей...
Palladin (2008-07-04 10:21:00) [27]смотре где приводится...
смотря что к чему приводится...
например в delphi в простейшем случае компилятор воспринимает данные в некотором участке памяти как приводимый тип данных, в сложнейшем случае приводимость типов отрабатывается во время исполнения на уровне rtl, то бишь происходит попытка из переменной-источника получить данные типа переменной-назначения, это касается variant'ов, интерфейсов и, может, еще чего нибудь
ну и в delphi, кстати, integer к char ты не приведешь, одно из условий приведения простых типов - совпадение размеров