![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#31 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,431
|
![]()
Размер float 4 байта. Если x - указатель на float, то FE44 - 2 * sizeof(float) = FE44 - 8 = FE3C.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#32 |
Форумчанин
Регистрация: 02.10.2013
Сообщений: 231
|
![]()
BDA, действительно float 4 байта, я упустил это.А как тогда это связано с этим X=FE44 X+=2 X=FE54?Возможно где-то в программе X указывает на double, но такого нигде нет, да и причем у вообще это не ясно.
|
![]() |
![]() |
![]() |
#33 | |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,431
|
![]()
1) Выложите как можно более короткую программу, где ясно видно, что
Цитата:
3) Воспользуйтесь советом Stiletа и научитесь пользоваться отладчиком
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
|
![]() |
![]() |
![]() |
#34 |
Форумчанин
Регистрация: 02.10.2013
Сообщений: 231
|
![]()
Stilet, да, на каникулах подружусь с отладчиком.
У меня адресная арифметика одну лабораторную, если будет необходимость разберусь с ней, сейчас важнее другие темы и предметы.Но на экзамене будут по указателям спрашивать, справлюсь. |
![]() |
![]() |
![]() |
#35 |
Форумчанин
Регистрация: 02.10.2013
Сообщений: 231
|
![]()
Что выведет данный кусок программы относящейся к программе выше?
float y; float *x=&y; *x=1; printf("%f %f\n", *x,y); int *a=(int*a)&y; printf("%d %d\n", *a, (int)y); double *m=(double*)&y; *m=1; printf("%lf %lf\n", *m, (double)y); Вот что у меня получилось: 1.000000 1.000000 1 0 1.000000 1.000000 Вопрос был такой, почему во второй строке строке ноль? |
![]() |
![]() |
![]() |
#36 |
Форумчанин
Регистрация: 02.10.2013
Сообщений: 231
|
![]()
Как я понимаю что-то связано с мантисой и представлением чисел в памяти компьютера.
|
![]() |
![]() |
![]() |
#37 |
Участник клуба
Регистрация: 03.12.2009
Сообщений: 1,013
|
![]()
Пробежался отладчиком.
Честно, я что-то до сих пор таким образом не баловался, да и в голову не приходило. Ох уж эти опасные преобразования, но понимать такие вещи надо! И почему я всегда боялся подобных экспериментов? ![]() Код:
Код:
Почему после этого присваивания y и x обнуляются? Аж интересно стало. У нас указатель типа double, который как бы подразумевает в себе, что он ссылается на 8 байт, стал ссылаться на область в размере 4 байта. Записав в эту область единицу. Она же как бы как была 4 байта, так и осталась. Только указатель double эту область интерпретирует эту область как 1, а float как нуль. Так если еще после этого присвоения изменить значение области через указатель y, то прям какая то магия - по одному и тому же адресу 2 значения. Если рассуждать логически, то после считывания по указателю double (учитывая что он ссылается на область в 4 байта) там была бы каша. Спасибо! P.S. Ведь есть же знатоки плюсов, очень жду вашей помощи ![]() |
![]() |
![]() |
![]() |
#38 | |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
![]()
Читал только последний пост..
Цитата:
И какой тип Y? |
|
![]() |
![]() |
![]() |
#39 |
Участник клуба
Регистрация: 03.12.2009
Сообщений: 1,013
|
![]()
Ну здесь в принципе в последнем посте вся соль
![]() X - вторая строчка Y - первая Y - float |
![]() |
![]() |
![]() |
#40 | ||
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
![]() Цитата:
Цитата:
Ты берешь указатель на float (указатель на 4 б) Превращаешь его в указатель на 8 б Заносишь по адресу 1-ку.. Единичка заносится в самый крайний бит! Тем самым мы (возможно) изменили значение последнего байта на 1-ку! А в остальные идут 0.. А теперь угадай чем будет равна переменная, если на всех двоичный разрядах у неё - нули..? UPDATE Я решил проверить.. тыц.. Почему тогда a[1] != 1? Последний раз редактировалось Poma][a; 14.01.2014 в 22:56. |
||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Известны фамилии,адреса и телефоны 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 |