1 | ||||||
типы указателей Подбельский20.07.2013, 22:01. Просмотров 3109. Ответов 32
Метки нет Все метки)
(
пример из книжки Подбельского
*cp=78 *ip=5678 *lp=12345678 но у меня выводится *ip=12345678, хотя указатель типа int должен вроде бы вмещать 2 байта. Тогда в чем же дело?
0
|
|
20.07.2013, 22:01 | |
типы указателей Не получается преобразовать типы указателей на функцию Размер памяти для указателей имеющих различные типы Сериализация указателей на примитивные типы |
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,039
|
|
20.07.2013, 22:07 | 2 |
0
|
20.07.2013, 22:40 [ТС] | 5 | |||||
нда действительно в моём компиляторе sizeof( int ) == 4. тогда почему я не могу сделать переменную double L= 0x123456789L хотя в моём компиляторе sizeof( double ) == 8. Т.е.
integer constant is too large for "long" type
0
|
![]() ![]() |
|
20.07.2013, 22:53 | 7 |
https://www.cyberforum.ru/blogs/18334/blog69.html
Добавлено через 3 минуты В этой записи условно два действия. В правой части ты описываешь константу типа long, преобразовываешь её к типу double и только потом записываешь в переменную типа double. Размер long'а на твоём компиляторе, судя по всему, равен 4 байтам, а потому такая константа вылезает за диапазон. Если хочешь задать константу типа double, то нужно к ней хоть какую-то дробную часть приделать C double L = 123456789.0
0
|
21.07.2013, 12:57 | 9 |
Когда писались некоторые старые книги, в С++ - компиляторах int и int* были 16-ти битными. По стандарту short не меньше 16 бит, long не меньше 32, а int между ними. С другой стороны, int всегда (т.е. лет 40, если учитывать Си) был таким, что вмещал указатель. Поэтому на 16-битных разрядах int был 16, а на 32-битных стал 32 бита. Теперь 64 бита и правило нарушилось. Появились int64, long long (64 бита).
Да и с самим long не все гладко: в большинстве случаев он 32 бита, но иногда 64 (модель данных LP), а в C# и Java всегда 64. Посмотреть размеры типов для разных моделей данных можно здесь: http://okolovich.info/model-dannykh-v-c/
0
|
22.07.2013, 11:04 | 11 |
Я прочитал это у Страуструпа (специальное издание, Бином, 2011г, стр 120):
Здесь N может быть char, short int, int или long int. Кроме того, гарантируется, что под char отводится минимум 8 бит, под short или int — минимум 16 бит, под long — минимум 32 бита. А Страуструпу я верю ![]()
0
|
Croessmah
|
22.07.2013, 14:33
#12
|
Не по теме: Jupiter, вот:
0
|
![]() 2919 / 1268 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
22.07.2013, 14:47 | 13 |
При всем уважении к д-ру Страуструпу, лучше все же верить Стандарту.
А он утверждает следующее: sizeof(char) == 1 sizeof(char) <= sizeof(int) <= sizeof(long) <= sizeof(long long).
0
|
What a waste!
1579 / 1279 / 172
Регистрация: 21.04.2012
Сообщений: 2,683
|
|
22.07.2013, 16:53 | 15 |
В С же есть <limits.h>, и там есть минимально возможные значения, напимер
и т.д. <climits> включает <limits.h>
0
|
![]() 2919 / 1268 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
22.07.2013, 17:00 | 16 |
Как говорится, открой для себя мир архитектур, отличных от Intel x86, и мир операционных систем, отличных от Windows.....
0
|
22.07.2013, 18:10 | 19 |
3. The fundamental storage unit in the C++ memory model is the byte. A byte is at least large enough to contain
any member of the basic execution character set (2.3) and the eight-bit code units of the Unicode UTF-8 encoding form and is composed of a contiguous sequence of bits, the number of which is implementationdefined
0
|
Don't worry, be happy
|
|
22.07.2013, 18:18 | 20 |
zer0mail, даже в википедии есть примеры )))
0
|
22.07.2013, 18:18 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Создать массив указателей на функции к функциям, которые имеют разное число и типы параметров? Почему в сортировке указателей на объекты в вызове функции используются адреса объектов, а не указателей? Создать специфицированный шаблон функции, принимающей массив указателей на char и количество самих указателей Объяснить различия в работе указателей на целое число и указателей на const char (строки в стиле Си) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |