Глупый вопрос ну всеже...
У меня в книжке написано sizeof(int) = 2байта,
a на тестах дома (BC++ v5.5 Line) sizeof(int) = 4байта.Какой на самом деле должен быть размер типа инт?
Какой размер типа int у вас?
У меня в книжке написано sizeof(int) = 2байта,
a на тестах дома (BC++ v5.5 Line) sizeof(int) = 4байта.Какой на самом деле должен быть размер типа инт?
например, на Turbo C++ он два байта.
но на вижуале, билдере, и прочих современных реализациях он 4 байта.
Какой размер типа int у вас?
У меня в книжке написано sizeof(int) = 2байта,
a на тестах дома (BC++ v5.5 Line) sizeof(int) = 4байта.Какой на самом деле должен быть размер типа инт?
В стандарте C, afair, говорится, что размерность типов данных зависит от платформы. Для этого-то [FONT=courier new]sizeof[/FONT] и нужен...
Это число (как например и строка) хранятся в виде ммассива в Оперативной паняти.
А как в 2байта может влезть число 65535?Т.е. в Turbo c++ максимальное значение типа unsigned int равно 0x000000FF, те это 255!Непонимаю!
1байт - максимальное число 0x000000FF
2байта - максимальное число 0x0000FFFF
4байта - максимальное число 0x00FFFFFF
8байта - максимальное число 0xFFFFFFFF
А не так как ти написа 0x000000FF - 2байта - ето абсурд!!! 0xF (1111 - bin) - ето тетрада и занимает только 4бита!!!
Размер типа int определяється компилятором!!! Потому-что компилятор пишется с поддержкой под конкретную платформу и разрядность процесора, и поетому он и задает конкретний размер типов даних.
И только платформенно-независимие мови програмирования имеют стандартний размер типов даних повсюду (например в Java int имеет 4 байта).
Вот, допустим 8бит:
|0|0|0|0|0|0|0|0|
если туда записать число 15, то будет так:
|0|0|0|0|1|1|1|1|
если туда записать число -15, то будет так:
|1|0|0|0|1|1|1|1|
Тогда получается что максимальное число - семь единичек, тк первый байт отводится под знак:
|0|1|1|1|1|1|1|1|
(1111111 bin = 127 dec)
Тогда
|1|1|1|1|1|1|1|1|
будет равен -127.
Или я что-то путаю?
Но есть еще такие типы как
unsigned int - беззнаковый инт.
Я похоже что-то не догоняю...
Вот, допустим 8бит:
|0|0|0|0|0|0|0|0|
если туда записать число 15, то будет так:
|0|0|0|0|1|1|1|1|
если туда записать число -15, то будет так:
|1|0|0|0|1|1|1|1|
Тогда получается что максимальное число - семь единичек, тк первый байт отводится под знак:
|0|1|1|1|1|1|1|1|
(1111111 bin = 127 dec)
Тогда
|1|1|1|1|1|1|1|1|
будет равен -127.
Или я что-то путаю?
Ну правильно ты написал. Но если ты говориш что под unsigned int отводится 2 байта,а максимальное значение данного типа 256 то вот это чуш,должно быть по любому 65535. Если только там преднамерено не блокируют 2й байт а использую ток первый. но это глупо.
Тогда получается что максимальное число - семь единичек, тк первый байт отводится под знак
Не байт, а бит. И не первый, а последний.
Получаем:
- 0..65535 - для беззнаковых 16-битных чисел
- -32768..32767 - для знаковых
А как в 2байта может влезть число 65535?Т.е. в Turbo c++ максимальное значение типа unsigned int равно 0x000000FF, те это 255!Непонимаю!
Не 0х000000FF, a 0х0000FFFF.
Может Ты думаеш что F - ето байт (я так часто путаюсь), ето пол байта
(0xF = 15 = 1111b)
старший бит отвечает за знак (например, 0x1XXXXXXX - число отрицательное).
int:
старший бит (справа на лево восьмой) является частью числа (например, 0xXXXXXXXX).
Если я прав то до меня доперло...так это?
unsigned int:
старший бит отвечает за знак (например, 0x1XXXXXXX - число отрицательное).
int:
старший бит (справа на лево восьмой) является частью числа (например, 0xXXXXXXXX).
Если я прав то до меня доперло...так это?
Наоборот всё.