|
3 / 3 / 0
Регистрация: 13.06.2012
Сообщений: 28
|
|
Зачем нужны модификаторы типов?14.06.2012, 18:44. Показов 10265. Ответов 21
Метки нет (Все метки)
Читаю Шилдта и все более менее понятно,но насчет unsigned , signed , shot , long что то вообще дыра в понимании и их пропускал,а потом пришлось вернутся.Наверно это из-за того,что для меня не понятны многие моменты и их описания.Например,что за таблица,в которой написаны : типы,биты,диапазон?Биты - размер,но не ясно зачем знать какой он и где это применяется.Диапазон - ^_^,к примеру что это -128 127 и опять же зачем?Книжку ещё не дочитал и может забегаю на перед,но Шилдт так уверено примеры дает и пишет о них,что кажется я уже должен ясно понимать о чем идет речь.Пожалуйста объясните максимально подробно и понятно(гугл не помог).
0
|
|
| 14.06.2012, 18:44 | |
|
Ответы с готовыми решениями:
21
Для чего нужны модификаторы protected, private, public Зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может больше 4 байт весить?
|
|
Супер-модератор
|
|
| 14.06.2012, 19:30 | |
|
1) Числа со знаком называются "signed". Как ты знаешь, знак числа занимает один бит. Рассмотрим байт. В нем 8 бит. Если старший бит использовать для знака, то на число остаётся 7 бит. В семи битах можно максимально уместить число 127. Если же знак не используется, то числа наз. "unsigned". Беззнаковые числа всегда неотрицательны. В тех же 8 битах можно разместить число от 0 до 255.
2) short и long обеспечивают нужный диапазон чисел. Так short может быть двухбайтовым целым, а long - 4-байтовым (это зависит от реализации языка)
1
|
|
|
3 / 3 / 0
Регистрация: 13.06.2012
Сообщений: 28
|
|
| 14.06.2012, 20:22 [ТС] | |
|
Ясно,ну а где это все пригодится?
0
|
|
|
21 / 21 / 7
Регистрация: 16.09.2009
Сообщений: 111
|
||
| 14.06.2012, 20:37 | ||
Сообщение было отмечено как решение
Решениеshort используется для экономии памяти, если у тебя очень большой массив данных храниться, допустим на 10^9 элементов, то int займёт 4 Гб, а short в 2 раза меньше(хотя на некоторых компах int=short). long используется если тебе не достаточно диапозона inta, например тебе надо хранить числа порядка 10^10. Если ты попытаешься сохранить такое число в int, то у тебя будет переполнение и в результате ты не сможешь восстановить то число, которое сохранил в переменную. unsigned используется в тех случаях, когда ты точно знаешь что в данную переменную не будешь записывать отрицательные числа(для экономии того самого знакового бита). Во всех языках программирования есть разние типы данных, разного диапозона. Беззнаковые типы тоже встречаются во многих языках, но в некоторых нет, например java.
3
|
||
|
3 / 3 / 0
Регистрация: 13.06.2012
Сообщений: 28
|
|
| 14.06.2012, 21:03 [ТС] | |
|
Интересно для каких это проектов понадобится).Ну суть понята спасибо,странно что Шилдт этой теме уделяет время в книге для начинающих ибо без реальной задачи с оптимизацией тяжело разобраться.
0
|
|
|
385 / 229 / 12
Регистрация: 06.07.2011
Сообщений: 512
|
|
| 14.06.2012, 21:09 | |
|
C и C++ имеют низкоуровневые методы, поэтому таким вещам учить необходимо. В большинстве случаев можно обойтись int и double. Но когда для задачи оказывается критически важными объем памяти, точность вычислений, либо взаимодействие с другими платформами/технологиями, то знать столь низкоуровневую информацию о типах нужно.
0
|
|
|
3 / 3 / 0
Регистрация: 13.06.2012
Сообщений: 28
|
|
| 14.06.2012, 21:34 [ТС] | |
|
Я и не спорю о таком,конечно нужно,но имхо для новичка в книге Шилдта слишком поверхностная подача этих низкоуровневых методов,если уж без глубины описывать что то,то лучше совсем не писать.
0
|
|
|
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
||
| 14.06.2012, 22:02 | ||
|
0
|
||
|
21 / 21 / 7
Регистрация: 16.09.2009
Сообщений: 111
|
|||
| 15.06.2012, 16:53 | |||
Я же образно, цифры с потолка брал, чтобы пояснить разницу между long и int(Хотя зачастую в них и вправду разницы нет, зависит от процессора) 4*10^9 влезит)
0
|
|||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 15.06.2012, 20:59 | ||
|
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||||||||||||||
| 16.06.2012, 06:48 | |||||||||||||||||
|
signed - это знаковый, unsigned - беззнаковый.
Добавлено через 55 секунд Добавлено через 3 минуты Добавлено через 2 минуты Добавлено через 1 минуту
2
|
|||||||||||||||||
|
3 / 3 / 0
Регистрация: 13.06.2012
Сообщений: 28
|
|
| 17.06.2012, 14:51 [ТС] | |
|
taras atavin
Спасибо за пояснения,примерно разобрался,а там уже когда столкнусь с такой задачей,то буду углубляться и ещё раз перечитаю сообщения в этой теме) Добавлено через 12 минут А почему говорят что signed int , unsigned int и int - это три разные типа, ведь signed int и int идентичны или я не прав?
0
|
|
|
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
||
| 17.06.2012, 17:03 | ||
|
0
|
||
|
|
||
| 17.06.2012, 17:15 | ||
|
signed, unsigned, short, long по своей сути НЕ являются модификаторами типов. Это ключевые слова, которые задают разные типы. Т.е. "short int" НЕ надо рассматривать как тип int с модификаторам, а следует рассматривать просто как отдельный целочисленный тип. Каждый целочисленный тип обладает двумя основными характеристиками: размер и знаковость. Размер определяет то, сколько бит отводится для хранения числа. Чем больше бит, чем бОльший диапазон значений можно хранить в данном типе. Знаковость числа влияет на то, как число будет трактоваться. Более подробно описывал в посте N11 в данной теме: Signed/Unsigned. Но лучше всю тему просмотри
Ну и так, для порядку: https://www.cyberforum.ru/blogs/18334/blog69.html
1
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 17.06.2012, 17:32 | |
|
0
|
|
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
||||||
| 17.06.2012, 17:54 | ||||||
|
Зависит от архитектуры системы, в Win, например, long останется 4 байтным.
Вот примерная таблица:
2
|
||||||
|
|
|
| 17.06.2012, 18:21 | |
|
На всякий случай, не всем очевидно. LP64 означает, что Long и Pointer имеют размер 64 бита (long long автоматически 64-битный, т.к. он должен быть больше или равен long'у, других 64-битных целочисленных типов нет). LLP64 - Long Long и Pointer имеют размер 64 (других 64-битных целочисленных типов нет). Мне всегда казалось, что 32-битные коды под винду и под юникс - это LP32, а 64-битные под винду и под юникс - LP64. Это две основные настройки современных 32- и 64-битных режимов. Но 64-битной винды нет, чтобы проверить, всё остальное (32- под винду и юникс, 64- под юникс) - верно
0
|
|
|
3 / 3 / 0
Регистрация: 13.06.2012
Сообщений: 28
|
|||
| 17.06.2012, 18:52 [ТС] | |||
|
Добавлено через 17 минут
0
|
|||
|
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
|
|
| 17.06.2012, 19:07 | |
|
0
|
|
|
|
||||||||
| 17.06.2012, 19:19 | ||||||||
|
Добавлено через 2 минуты
1
|
||||||||
| 17.06.2012, 19:19 | |
|
Помогаю со студенческими работами здесь
20
Зачем нужны макросы?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|