Типы данных. Зачем нужен int?
Заранее приношу извинения, за свой глупый наверное вопрос, но никак не могу понять, для чего в языке C предусмотрен тип данных int? Есть double и float с много большей разрядностью, а тут какой-то обрезок, да к тому же зависящий от разрядности операционной системы, что имхо может стать причиной неоднозначности в ходе выполнения приложения. К тому же компиляторы автоматически преобразуют int в более "длинные" типы данных, если int встречается в выражениях вместе с double и float. Зачем же он нужен?
Подозреваю, что int есть рудимент, оставшийся с тех времен, когда компьютеры были большими, а оперативная память очень маленькая и использовался для экономии ресурсов. Сейчас то какой в нем смысл? Или я чего-то недопонимаю (не знаю)? |
Для внутренней совместимости форматов, скорее всего.
|
Чтобы избежать проблем с кодом, созданным давным-давно под старые компиляторы? Понятно... А я грешным делом подумал, что бывают особые случаи, когда без int никак обойтись нельзя.
|
Не совсем так.
Различают так называемые фундаментальные и интегральные типы данных. Int относится именно к фундаментальным типам. На основе фундаментальных типов можно, опираясь на правила преобразования и конструирования типов, построить интегральные, естественно, с наследованием соответствующих признаков. И еще, вот цитаты из книги Бьярна Страустрапа "Введение в язык C++": Цитата:
Цитата:
Цитата:
|
Выходит, выводы мои были поспешны и int совсем не лишний и не устаревший тип, а один из элементов, придающий языку C гибкость и эффективность. Спасибо за поправку, а то у меня начало уже складываться неверное понимание самых основ C, по-видимому сказывается тяжкое наследие бейсика :(
|
вообще-то это для оптимизации. ведь не будете забивать маленькие гвозди кувалдой так ведь?
в дельфи например есть еще тип word кажется и еще какой-то так там вообще до от -256 до 256. если создать к примеру программу в том же с в нем переменную int a =1 и другую float a = 2 то первая будет вообще говоря весить меньше второй. но это совсем не значительно. есть еще некоторые функции кажется с округлением. там тоже есть некоторые проблемы.в общем если известно что там будет только целые то лучше использовать именно их если еще и положительные то unsigned если еще и не нужно сильно больше то вроде можно использовать shortint ну и т.д. старайтесь оптимизировать код сразу но не усердствовать сильно. соблюдать середину золотую так сказать))) |
Просто действия над целыми числами выполняются гораздо бысрее чем над вещественными и требуют меньше памяти для хранения. Все очень просто, нужно оперировать целочисленными значениями -- выбираем int (если мало, то long int), нужны дробные -- float или double.
|
Проверил на практике скорость выполнения приложений с различными типами данный. Простенькая программулька с циклом for, складывающая последовательно все числа начиная с единицы, вплоть до того, пока сумма не станет равна 1_у миллиарду. Сначала все переменные объявил как int, потом как dooble. В первом случае программа выполнилась в 1,5 раза быстрее!!! :eek:
Все, пошел перечитывать раздел о правилах преобразования типов, который сначала счел не особо важным. |
Часовой пояс GMT +4, время: 08:12. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.