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

Преобразование типов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Файлы http://www.cyberforum.ru/cpp-beginners/thread137746.html
ПОмогите малость.... мне надо сделать константу масива X, и чтоб вводить её с клавиатуры... просто натолкните на тему..дальше я сам) #include<iostream.h> #include<conio.h> #include<math.h>...
C++ Существуют ли в C++ аналоги делфийских write и read? Только час назад начал изучать С++ обшарил пол интернета но что то так и не соображу , есть ли тут аналог Делфевских Write и read Добавлено через 3 часа 4 минуты Благодарю за огромное количество... http://www.cyberforum.ru/cpp-beginners/thread137741.html
что такое типизированный файл? C++
что это такое? и как с ним работать? Добавлено через 24 минуты хелп народ... Добавлено через 52 минуты неужели никто не знает?
C++ Как переделать програму
Нужно зделать програмку ету(t$=“Успишнисть из в/т”; ...успеваемость студентов группы из вычислительной техники: фамилия и инициалы, оценка по лаб. роб.№1, оценка по лаб. роб. №2, оценка по лаб. роб....
C++ Обход дерева http://www.cyberforum.ru/cpp-beginners/thread137719.html
Всем доброе время суток. Не могу нормально обойти дерево и просмотреть введённое, по всей видимости, возможно я неправильно поставил указатели. В общем помогите разобраться. Конечно немного стыдно,...
C++ вывести из файла цитаты помогите пожалуйста с программкой. нужно создать текстовый файл,а потом вывести из него те предложения, которые заключены в кавычки. файл создала, а вот с выводом проблема,сказали попробовать... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
18029 / 6261 / 427
Регистрация: 30.03.2009
Сообщений: 17,203
Записей в блоге: 27
30.05.2010, 19:42
insideone, твоим способом можно копировать только те типы, которые имеют одинаковый размер. И, в противовес заголовку темы, тут нет преобразования типов. Проще, чем так, не сделать. Такая конструкция - самая простая и самая быстрая в реализации: несмотря на то, что тут есть взятие адреса и разыменование, даже самый отстойный компилятор сделает простое побайтное копирование из одного объекта в другой

На таком же принципе можно строить сравнение плавающих чисел, если заведомо известно, что они имеют один и тот же знак и являются нормальным числом (т.е. не бесконечность, не NaN и не прочая ерунда, которая есть в плавающем стандарте). Т.е. вместо

C
1
2
3
float a, b;
...
if (a < b)
можно написать

C
1
2
3
float a, b;
...
if (*((unsigned*)a) < *((unsigned*)b))
Т.е. сия конструкция означает, что из переменной a и b читаются значения (набор нулей и единиц), которые трактуются как целочисленные, а потому будет использована операция целочисленного сравнения (которая на многих архитектурах работает быстрее, чем плавающее сравнение). Код при этом никак не меняется, кроме того, что вместо аппаратной операции плавающего сравнения будет использована аппаратная операция целочисленного сравнения. Никаких дополнительных операций построено не будет, несмотря на то, что в тексте есть взятие адреса и разыменование. Это справедливо для режима с оптимизациями, но, подозреваю, что многие компиляторы даже без оптимизаций сделает именно так.

Да, забыл сказать. Чит основан на том, что двоичное представление плавающих чисел обладает тем свойством, что числа одного знака упорядочены. В своё время этим приёмом пользовались, когда отображалась статистика игроков в какой-то стрелялке (видимо, в те времена это было Quake): постоянно требовалась сортировка таблицы по рейтингу (который был плавающим числом), а в те времена на процессоре 486 (или 386, опять-таки толком уже и не помню) без сопроцессора плавающее сравнение эмулировалось программно, а потому работало чуть ли не на два порядка дольше, чем целочисленное
5
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru