Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Ksan
27 / 27 / 0
Регистрация: 02.11.2010
Сообщений: 370
#1

double - C++

04.07.2012, 17:37. Просмотров 1140. Ответов 21
Метки нет (Все метки)

Если преобразовать double к char*, то какие байты будут отвечать за целую часть, а какие за дробную?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2012, 17:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос double (C++):

Ошибки error C2296: -: недопустимо, левый операнд имеет тип "double (__cdecl *)(double,double,double - C++
Думаю из-за polp #include<iostream> #include<cmath> #include<cstdlib> using namespace std; double polp(double af,double...

Ошибка: error LNK2001: unresolved external symbol "double __cdecl Akk(double,double,double)" - C++
#include <iostream> #include <cmath> using namespace std; double Akk(double x, double y, double z); int main() { int a, b, c; ...

Почему мы пишем double x (double y)? а не через запятую double x,y - C++
почему мы пишем double x (double y)? а не через запятую double x,y

Исправить ошибки "cannot convert 'double (*)(double)' to 'double'" и "too many arguments to function" - C++
пожалуйста проверьте и помогите исправить ошибки: #include<iostream> #include<stdio.h> #include<math.h> #include<stdlib.h> ...

Почему перестает работать программа при замене double на long double? - C++
Здравствуйте! Прошу помощи чтобы разобраться в следующем вопросе: Нашел программу в интернете, запустил - все работает, но когда решил...

Преобразовать 2 числа int в 1 число float(double) | double int1.int2 - C++
Всем привет. Изучая азы C++, столкнулся с такой проблемой. Есть два значения типа int, их необходимо преобразовать в одно значение типа...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Catstail
Модератор
22541 / 10946 / 1775
Регистрация: 12.02.2012
Сообщений: 18,083
04.07.2012, 18:53 #16
Получим! 90 01 00 00, что означает 0000019016=40010
Да хоть 40000 подставь (получишь 40 9с 00 00), что равно 00009с4016. В десятичную переведи сам.
cppGhost
32 / 30 / 1
Регистрация: 21.06.2012
Сообщений: 91
04.07.2012, 18:57 #17
ок, тогда такой вопрос: вот мы проинициализировали так
C++
1
char *p = 'a';
где-то в памяти, в ячейке нашлось место для этого несчастного байта =)) потом сделали так
C++
1
2
int x = 400;
p = (unsigned char *) &x;
где гарантия, что в памяти после ячейки p есть свободное место, чтобы туда положить еще три байта? я теперь не говорю, что нельзя, но хочу понять валидность такого преобразования
Catstail
Модератор
22541 / 10946 / 1775
Регистрация: 12.02.2012
Сообщений: 18,083
04.07.2012, 19:05 #18
У тебя имеется элемент непонимания... Код
C++
1
char *p = 'a';
Выделяет байт, заносит в него 'a', и устанавливает указатель p на адрес этого байта.

а следующий за ним код

C++
1
2
int x = 400;
p = (unsigned char *) &x;
выделяет 4 байта под Х, заносит туда 400 и переустанавливает указатель p на адрес Х. Начиная с этого момента указатель забыл, что он раньше указывал на байт 'a'.
cppGhost
32 / 30 / 1
Регистрация: 21.06.2012
Сообщений: 91
04.07.2012, 19:07 #19
заносит туда 400 и переустанавливает указатель p на адрес Х
тут да, это я упустил

Цитата Сообщение от Catstail Посмотреть сообщение
Начиная с этого момента указатель забыл, что он раньше указывал на байт 'a'.
а как он может забыть, если он имеет тип char. неужели после приведения в стиле C указатель запоминает, на что он действительно стал указывать?

хотя да. это же мы знаем. сам то он не в курсе. что же, спасибо за разъяснение.
Catstail
Модератор
22541 / 10946 / 1775
Регистрация: 12.02.2012
Сообщений: 18,083
04.07.2012, 19:13 #20
Тип указателя char означает только то, что при разыменовании (добавл. *) будет браться один байт.
Evg
Эксперт CАвтор FAQ
17627 / 5851 / 376
Регистрация: 30.03.2009
Сообщений: 16,134
Записей в блоге: 26
04.07.2012, 19:17 #21
Цитата Сообщение от Ksan Посмотреть сообщение
Если преобразовать double к char*, то какие байты будут отвечать за целую часть, а какие за дробную?
См. стандарт ieee-754
http://www.softelectro.ru/ieee754.html далее параграф 5 рисунок 3

Добавлено через 57 секунд
Ну и на всякий случай. Там нет таких понятий, как целая и дробная часть. Там оперируется понятиями мантисса и экспонента
Catstail
Модератор
22541 / 10946 / 1775
Регистрация: 12.02.2012
Сообщений: 18,083
04.07.2012, 19:25 #22
Да, да... Я это отметил в первом ответе.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2012, 19:25
Привет! Вот еще темы с ответами:

Какая-нибудь реализация функции void Fun (double in, double *out) - C++
Подскажите, пожалуйста, какую-нибудь любую реализацию прототипа функции: void Fun (double in, double *out)

long double и double в MSVC 12 одно и тоже, нужна информация,желательно быстрей - C++
Здравствуйте все знают что в VC long double и double одно и тоже, да и при простой проверке это легко выясняется, но нужна информация от...

std::copy из vector<double> в *double, непонятный warning - C++
double myD={10,20,30,40,50,60,70}; std::vector&lt;double&gt; myvector (7); std::copy ( myD, myD+7, myvector.begin() ); std::copy (...

invalid operands of types ‘double*’ and ‘double’ to binary ‘operator*’ - C++
#include &quot;mpi.h&quot; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; #define count 120 int main(int argc,char *argv) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.07.2012, 19:25
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru