51 / 50 / 14
Регистрация: 17.11.2012
Сообщений: 427
|
||||||
1 | ||||||
Как сохранить float в переменной типа char?01.05.2016, 20:43. Показов 9338. Ответов 76
Метки нет (Все метки)
Всем здрасьте.
Как можно записать float в char ? И как потом float вытащить из char, если он будет находится примерно посередине ну или в начале?
0
|
01.05.2016, 20:43 | |
Ответы с готовыми решениями:
76
Как присвоить значение одного из элементов массива типа char переменной типа int? Как сохранить массив типа float в файл, и считать его оттуда? Преобразование массива типа char в массив типа float Как сохранить нажатую клавишу в переменную типа char? |
HighPredator
|
04.05.2016, 14:57
Как сохранить float в переменной типа char?
#61
|
0
|
castaway
|
04.05.2016, 22:24
#62
|
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
06.05.2016, 18:20 | 63 |
что б работало, нужно либо пасти алиасинг,
либо не ну, скажем так: не только. однако я лично ни разу не сталкивался с другими случаями. хотя если почтитать статьи про поломки алиасинга, то там можно найти самые разные примеры. не только с временными. если вы свои эквивалентности в чаровых буферах держали - жить будет. если не в чаровых - ну чо поделаешь... уб - такое уб в примере с враппером нет места возврату локальной ссылки.
0
|
Комп_Оратор)
|
|
06.05.2016, 21:16 | 64 |
Это я потом уже понял (вру, - так и не понял). Я не понял на что ссылается ссылка. Переменной нет, а ссылка без переменной как Пьер без ухов. Без обоих, причем.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
06.05.2016, 22:27 | 65 |
0
|
Комп_Оратор)
|
|
06.05.2016, 22:31 | 66 |
В данном примере, конкретно, возвращается ссылка без переменной. Случай локальной ссылки очень экзотический и интересный. Я поставил плюс от всей души, так как увидел и задумался о таком впервые. Такой возврат не запускает механизм копирования и на что ссылается такая ссылка знает один компилятор.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
06.05.2016, 22:45 | 67 |
возвращается ссылка которая нацелена на объект,
который живет в чаровом хранилище. поскольку, после выполнения функции, хранилище продолжает жить, то и ссылка получается валидной, и указывать на живой объект. здесь нет места "мутным темам". все оч прозрачно.
0
|
Комп_Оратор)
|
|
06.05.2016, 23:10 | 68 |
А он там живёт? Или там размещена информация в формате данных объекта (или нет но есть надежда их так интерпретировать). Вообще, когда говорят о ссылках никто не рискует конкретизировать вопрос её связи с...
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
06.05.2016, 23:21 | 69 |
мы просто возвращаем ссылку на объект,
который живет "где-то" в памяти. в данном случае - в чаровом массиве.
0
|
Комп_Оратор)
|
|
06.05.2016, 23:33 | 70 |
В данном примере я увидел что-то нездешнее, согласен. Наслушавшись про "несовместимые" указатели я подумал что объект в char[] создан как один тип, а ссылка - на другой. Сейчас вижу, что память заселена plaсement new и приведение указателя на массив чар к этому типу не кажется ничем крамольным. Тогда, не вижу в чём проблема. То есть не понимаю, чем указатель - локальная переменная p лучше чем временный и созданный при приведении.
0
|
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
|
|
07.05.2016, 07:48 | 71 |
hoggy, да уж... Дальше некуда как все оч прозрачно. Знаете, мне кажется что все это затащили в стандарт дабы донести баги оптимизаторов до народа - это именно баги иного названия я не могу придумать - все операции легальны в терминах которые я читал в букварях. Если они теперь играют с терминами, то я пас.
1
|
Комп_Оратор)
|
||||||
07.05.2016, 10:14 | 72 | |||||
vxg, я глядя на пример подумал о чём-то таком:
Кликните здесь для просмотра всего текста
То есть, в последних постах пытался донести до всех что-то такое, чего сам пытаюсь понять. Не по делу говорил, иначе говоря.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
07.05.2016, 14:35 | 73 | |||||
странные у вас какие то буквари.
в тех, что читал я сам нигде не рассказывалось, что можно просто так кастить теплое к мягкому.
поэтому, каст указателей - нелегален. компилятор имеет право думать, что два таких несовместимых указателя не могут указывать на один и тот же объект и на этом выстраивает оптимизацию. хотя по факту, вы конечно могли создать other, и вернуть указатель на него, как some* но это не есть "легальный код".
0
|
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
|
|
07.05.2016, 19:48 | 74 |
hoggy, смысл терминов из букварей заключался в том что указатель это адрес, а как его интерпретировать определяется его типом и проблемы будут лишь у тех кто либо пишет бред (то есть каст к тому чего нет по указанному адресу и по определению это нельзя развменовывать) либо кастует классы вверх наплевав на иерархию размещения полей и таблиц вирт функций что можно рассматривать как частный случай варианта номер один. О недопустимости загнать адрес чего угодно в char* void* или даже int и последующем приведении этого обезличенного указателя к любому типу там не говорилось ни слова и вот теперь пошла такая пена...
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
07.05.2016, 19:56 | 75 |
это - легально.
а это - нелегально. а как же ваши собственные слова? компилятор думает, что программист не дибил, и не будет кастить теплое к мягкому. и заложившись на это положение, он проворачивает некоторые оптимизации. у вас указатели должны быть связанны родственными отношениями. для хранилища вы можете использовать чаровые буфера. но вы не можете легально использовать интовый буфер для этой цели.
0
|
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
|
|
07.05.2016, 20:38 | 76 |
с чего бы это если у меня машина 32 бит? в VCL люди запихивают в Tag указатели и живут нормально
мои слова следует читать как "я поместил в void* что угодно и не понимаю почему я не могу достать из него что угодно - хотя по факту я конечно буду доставать тот тип что туда положил" почему если я к примеру хочу читать порциями 32 бит или выравнивать или все что угодно КАКОЕ простите сраному оптимизатору до этого дело - пусть делает свою работу и не лезет к "водителю"
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
07.05.2016, 20:56 | 77 |
не принципиально.
в инт можно пихать инт. пихать в инт не инт - нельзя. можете. хотя читал, что каст к войду и обратно не всегда спасает от нарушений алиасинга. типа шибко умный компилятор может пропасти контекст. он и делает свою работу. оптимизирует. для оптимизации ему нужно закладываться на некоторые положения здравого смысла. для блобов сделали исключения - чаровое хранилище. все что вам нужно - придерживаться регламента. а то у вас батхерт: хочу слить объект в интовое хранилище, а оно типа - это нельзя!
0
|
07.05.2016, 20:56 | |
07.05.2016, 20:56 | |
Помогаю со студенческими работами здесь
77
Как в один Label Вывести текст и значение переменной типа float? Переменной d присвоить первую цифру после запятой некоторой переменной x типа float Как работать с переменной типа char? Передача переменной типа double из c# в переменную типа float в SQL Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |