![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#51 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
![]()
С адресами всё в порядке.. косяк с указателями, а точнее с кол-вом байт, на которые они указывают..
нолик получается при *m = 1.. |
![]() |
![]() |
![]() |
#52 |
Форумчанин
Регистрация: 02.10.2013
Сообщений: 231
|
![]()
Я про этот код.
#include <stdio.h> int main(void) { float y; float *x=&y; *x=1; printf("%f %f\n", *x,y); int *a=(int*)&y; *a=1; printf("%d %d\n", *a, (int)y); double *m=(double*)&y; *m=1; printf("%lf %lf\n", *m, (double)y); return 0; } 1.000000 1.000000 1 0 1.000000 0.000000 Последний раз редактировалось East Undia Trading; 19.01.2014 в 20:40. |
![]() |
![]() |
![]() |
#53 |
Форумчанин
Регистрация: 02.10.2013
Сообщений: 231
|
![]()
Как получается ноль во второй строке?В *a=1?
|
![]() |
![]() |
![]() |
#54 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
![]()
Очень просто..
а - указатель на int.. а в памяти, куда указывает a, хранится 00000001.. Выводим это число ввиде int'a и это 1-ка.. выводим y, приведенный к int'y.. сначала идет 1 бит - знак.. потом мантиса и порядок.. и рассмотрим (-1)^знак*мантису*2^порядок.. а в памяти это 00000001.. получаем (-1)^0*0*2^1.. и это 0.. |
![]() |
![]() |
![]() |
#55 |
Форумчанин
Регистрация: 02.10.2013
Сообщений: 231
|
![]()
Poma][a, эта формула представления вещественных чисел в памяти компьютера, как я понимаю.Но какое тогда мы число представляем?Никак не могу связать ваш ответ с вопросом, почему и где получается ноль?
У нас был y-вещественный, указали на его адрес x, после чего занесли туда единицу.Дальше вывели y как целое... |
![]() |
![]() |
![]() |
#56 |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
![]()
Число 1.. Мы же занесли его туда.. Но занесли, как целое число!
Дальше выводим как целое - ответ - 1. Дальше выводим как вещественное, приведенное к целому.. И это 0.0000000.. А теперь приводим к целому.. Это 0 |
![]() |
![]() |
![]() |
#57 |
Форумчанин
Регистрация: 02.10.2013
Сообщений: 231
|
![]() |
![]() |
![]() |
![]() |
#58 | |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
![]() Цитата:
Это общая формула. А далее для нашего примера.. Про третюю строчку разговор отдельный.. Там еще фишка про взятие лишнего байта.. |
|
![]() |
![]() |
![]() |
#59 |
Форумчанин
Регистрация: 02.10.2013
Сообщений: 231
|
![]()
И все же, что происходит в третьей строчке?
Там, как я понимаю, преобразуется тип не адреса, а самой переменной. |
![]() |
![]() |
![]() |
#60 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]() Код:
Хотите получить значение переменной - делайте разыменование. При Вашем уровне знаний, заниматься таким - рановато.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 20.01.2014 в 00:12. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Известны фамилии,адреса и телефоны 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 |