Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2014, 23:09   #41
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Цитата:
Сообщение от 'Poma
Не понимаю..
Что именно ?
Цитата:
Сообщение от 'Poma
Как говорит Си.. float - 4 б double - 8 б
Ты берешь указатель на float (указатель на 4 б)
Превращаешь его в указатель на 8 б
Заносишь по адресу 1-ку..
Единичка заносится в самый крайний бит! Тем самым мы (возможно) изменили значение последнего байта на 1-ку! А в остальные идут 0..
А теперь угадай чем будет равна переменная, если на всех двоичный разрядах у неё - нули..?
Так в том то и дело, что он не превращается в указатель типа double, он как был float, так им и остался.

Да, у меня тоже была идея, что double якобы забирает за границами float еще 4 байта и их использует, и якобы старшие 32 разряда относятся исключительное к float, а все 64 к double.
Но отладка показала, что это не так.

UPDATE
Цитата:
UPDATE
Я решил проверить..
тыц.. Почему тогда a[1] != 1?
Вижу
А попробуй теперь по адресу m задай число 64 битное, и увидишь что в нулевом элементе массива по прежнему нуль

Последний раз редактировалось Базиля; 14.01.2014 в 23:22.
Базиля вне форума Ответить с цитированием
Старый 15.01.2014, 07:16   #42
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Что именно ?
Что за строчки.. И где все же X..
Цитата:
Так в том то и дело, что он не превращается в указатель типа double, он как был float, так им и остался.
Почему? У тебя же идет преобразование типов..

Цитата:
А попробуй теперь по адресу m задай число 64 битное, и увидишь что в нулевом элементе массива по прежнему нуль
Не всегда.. Это из-за кодирования вещественных чисел (которое я знаю очень относительно)..
Например :
тыц
Poma][a вне форума Ответить с цитированием
Старый 15.01.2014, 20:59   #43
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

На вопрос почему во второй строке ноль, я ответил - "Происходит несовместимость(Не помню как это правильно называется) типов данных из-за этого получается ноль.".Но теперь не могу найти, где именно происходит не совместимость типов?И в третьей строке тоже ноль будет.
East Undia Trading вне форума Ответить с цитированием
Старый 15.01.2014, 23:18   #44
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Poma][a
Цитата:
Что за строчки.. И где все же X..
Строка кода я имел в виду
Из поста 35
x на второй строке этого кода
Цитата:
Почему? У тебя же идет преобразование типов..
Покажи тогда, в каком куске кода указатель на float превратился в указатель на double
Цитата:
Не всегда.. Это из-за кодирования вещественных чисел (которое я знаю очень относительно)..
Например :
Скорее всего да, соглашусь с тобой.
Пойду читать

Последний раз редактировалось Базиля; 15.01.2014 в 23:22.
Базиля вне форума Ответить с цитированием
Старый 15.01.2014, 23:18   #45
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Так-с.. я понял что за X и Y.. надо было прочитать пост, предшествующий посту Базиля

У меня совершенно другие ответы..
тыц

UPDATE
Обогнал

Цитата:
Покажи тогда, в каком куске кода указатель на float превратился в указатель на double
Цитата:
(double*)&y;
M у тебя становится указателем на double.. беря из воздуха 4 байта..

Последний раз редактировалось Poma][a; 15.01.2014 в 23:21.
Poma][a вне форума Ответить с цитированием
Старый 15.01.2014, 23:27   #46
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Poma][a
Цитата:
(double*)&y;
Указатель y от этого не стал ссылаться на другую область, здесь лишь просто приведение произошло.
Сам указатель не изменился.
Цитата:
M у тебя становится указателем на double.. беря из воздуха 4 байта..
M и было указателем на double, просто стало ссылаться на область float, я ведь правильно понимаю, что без спроса возьмет еще 4 байта при разыменовании?
Базиля вне форума Ответить с цитированием
Старый 15.01.2014, 23:31   #47
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Указатель y от этого не стал ссылаться на другую область, здесь лишь просто приведение произошло.
Угу
Цитата:
Сам указатель не изменился.
Что ты хотел этим сказать?

Цитата:
я ведь правильно понимаю, что без спроса возьмет еще 4 байта при разыменовании?
Угу..
Poma][a вне форума Ответить с цитированием
Старый 16.01.2014, 00:08   #48
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Цитата:
Что ты хотел этим сказать?
Это я все к этому:
Цитата:
Сообщение от Базиля Посмотреть сообщение
Так в том то и дело, что он не превращается в указатель типа double, он как был float, так им и остался.
Цитата:
Сообщение от Poma][a Посмотреть сообщение
Почему? У тебя же идет преобразование типов..
P.S.
Или я полагаю мы просто немного друг друга не поняли.
Базиля вне форума Ответить с цитированием
Старый 16.01.2014, 00:27   #49
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Давай тогда поймет друг друга
М становится указателем на double (8байт) и указывает на 4 байта от y + четыре следующих байта..
Когда мы присваиваем разъименованому указателю присваиваем 1-ку, то первые четыре байта получают нули, а другие четыре все нули и одну единичку... Далее все это переводится в нужный тип и выводится.. Тогда y = 0.. А про следующие четыре - говорить сложно.. Нужно или почитать про то, как кодируются вещественные числа в Си.. Либо провести эксперимент с memcpy.. И убедиться, что все работает корректно..
Poma][a вне форума Ответить с цитированием
Старый 19.01.2014, 20:00   #50
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

Poma][a, все же в каком месте программы происходит несовпадение адресов и получается ноль?
East Undia Trading вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Известны фамилии,адреса и телефоны 25-ти человек,Найти фамилии и адреса людей,чей телефон начинается с цифры 3. Расмотреть два слу salomon93 Паскаль, Turbo Pascal, PascalABC.NET 11 01.12.2011 23:36
адресная арифметика sterh11001100 Microsoft Office Excel 1 08.12.2010 13:20
Адреса переменных rommster Visual C++ 1 26.11.2010 08:35
Адресная арифметика и матрица. GrindeX Общие вопросы C/C++ 8 08.03.2010 15:03
Адресная книга Snake_ua PHP 6 26.02.2008 09:40