Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Размер типов в байтах, Какие не меняются 
:(
    Опции темы
Gwendolen
Дата 31.10.2006, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 5.4.2005

Репутация: нет
Всего: 1



Работаю с памятью, верно ли, что для всех компиляторов будет соблюдаться следующее:
1 byte:
 bool
 int8_t
 uint8_t
 CHAR

2 bytes:
 int16_t
 uint16_t
 WCHAR

4 bytes:
 BOOL
 INT32
 UINT32
 FLOAT

8 bytes:
 INT64
 UINT64
 DOUBLE

Какие еще есть неизменяемые по размеру типы? Какие лучше использовать как неизменяемые по размеру (int32_t vs. INT32)
или INT32 общий  случай т.е. множет быть signed и unsigned smile 

Это сообщение отредактировал(а) Gwendolen - 31.10.2006, 10:43
--------------------
Наносите пользу и причиняйте добро!
PM MAIL   Вверх
Romikgy
Дата 31.10.2006, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



К чему эта тема?
открой файл типа *.h и посмотри какие это типы, имхо только int тип варьируется в зависимости от системы и проца


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Kostt
Дата 31.10.2006, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 169
Регистрация: 8.1.2006
Где: Томск

Репутация: 1
Всего: 3



Используй sizeof(type_name) вместо константных значений
PM MAIL   Вверх
Gwendolen
Дата 31.10.2006, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 5.4.2005

Репутация: нет
Всего: 1



Цитата(Romikgy @  31.10.2006,  11:28 Найти цитируемый пост)
открой файл типа *.h

Уже смотрел stdint.h
--------------------
Наносите пользу и причиняйте добро!
PM MAIL   Вверх
Rockie
Дата 31.10.2006, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 8
Всего: 31



Gwendolen
Цитата(Kostt @  31.10.2006,  11:32 Найти цитируемый пост)
Используй sizeof(type_name) вместо константных значений

к примеру так:
Код
#include<iostream>

using namespace std;

int main(){

 cout<<sizeof(bool)<<'\n';
 cout<<sizeof(char)<<'\n';
 cout<<sizeof(int)<<'\n';
 cout<<sizeof(long)<<'\n';
 cout<<sizeof(double)<<'\n';
 cout<<sizeof(long double)<<'\n';

 cin.get();
 return 0;
}

Искал в стандарте описание типов но не нашел там описания размеров типов(за исключением char).
Цитата
INTERNATIONAL STANDARD ISO/IEC 14882

Цитата
5.3.3 Sizeof
1 The sizeof operator yields the number of bytes in the object representation of its operand. The operand
is either an expression, which is not evaluated, or a parenthesized type-id. The sizeof operator shall not
be applied to an expression that has function or incomplete type, or to an enumeration type before all its
enumerators have been declared, or to the parenthesized name of such types, or to an lvalue that designates
a bit-field. sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1;the
result of sizeof applied to any other fundamental type (3.9.1) is implementation-defined. [Note: in particular, sizeof(bool) and sizeof(wchar_t) are implementation-defined.69) ] [Note: See 1.7 for
the definition of byte and 3.9 for the definition of object representation. ]

Цитата
10 [Note: even if the implementation defines two or more basic types to have the same value representation, they are nevertheless different types. ]

стр. 54


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
JackYF
Дата 31.10.2006, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



А в стандарет этого и нет. Там есть только следующее:

sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long).

sizeof(unsigned T) == sizeof(signed T) для любого из вышеперечисленных типов.
Если я не ошибаюсь, гарантируется только это.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Любитель
Дата 31.10.2006, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Гарантируется, также, что int не меньше 16 бит и что-то ещё типа того.


--------------------
PM MAIL ICQ Skype   Вверх
archimed7592
Дата 31.10.2006, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



и что sizeof (char) = 1


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
JackYF
Дата 31.10.2006, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(archimed7592 @  31.10.2006,  19:40 Найти цитируемый пост)
и что sizeof (char) = 1 

Да, конечно же.



Цитата(Любитель @  31.10.2006,  17:12 Найти цитируемый пост)
Гарантируется, также, что int не меньше 16 бит и что-то ещё типа того.

Не видел... Если неправ, ткни пальцем.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Romikgy
Дата 31.10.2006, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



из мсдн
Код

On 32-bit platforms, the keyword int specifies a 32-bit signed integer. 
On 16-bit platforms, the keyword int is an optional keyword that can accompany the keywords small, short, and long.



Это сообщение отредактировал(а) Romikgy - 31.10.2006, 21:28


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
JackYF
Дата 31.10.2006, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Ну так это же MSDN... формально его действие распространяется только на MS' овские продукты...


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Romikgy
Дата 31.10.2006, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



проэксперементируй с другими системами


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
UnrealMan
Дата 1.11.2006, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Б. Страуструп:
Цитата
По поводу размеров фундаментальных типов гарантируется следующее:

Код
1 ≡ sizeof(char) ≤ sizeof(short) ≤ sizeof(int) ≤ sizeof(long)
1 ≤ sizeof(bool) ≤ sizeof(long)
sizeof(char) ≤ sizeof(wchar_t) ≤ sizeof(long)
sizeof(float) ≤ sizeof(double) ≤ sizeof(long double)
sizeof(N) ≡ sizeof(signed N) ≡ sizeof(unsigned N)

где N может быть charshort intint или long int. Кроме того гарантируется, что для представления char используется по меньшей мере 8 бит, для представления short – по меньшей мере 16 бит и для long – по меньшей мере 32 бита.


Это сообщение отредактировал(а) UnrealMan - 1.11.2006, 11:44
PM MAIL   Вверх
Romikgy
Дата 1.11.2006, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



smile обратно же про int никаких упоминаний smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
nickless
Дата 1.11.2006, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 19
Всего: 181



Существует много моделей размеров типов:
Код

Data Type          LP32  ILP32  ILP64  LLP64  LP64
char               8     8      8      8      8
short              16    16     16     16     16
int32                           32
int                16    32     64     32     32
long               32    32     64     32     64
long long (int64)                             64
pointer            32    32     64     64     64

LP32  : Win 3.1
ILP32 : 32 bit Windows & UNIX
LP64  : 64 bit UNIX
LLP64 : 64 bit Windows

Вот тут много про это написано

А еще ИМХО float всегда 32 бита, а double 64

Это сообщение отредактировал(а) nickless - 1.11.2006, 14:36


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0921 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.