Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Типы данных


Автор: AProjects 23.12.2009, 02:34
Перекопал везде и всюду, может где-то и есть обьяснение по поводу типов данных.
 
Какая разница между следующими типами данных (имеется ввиду между теми, в которых одинаковы размеры и границы величин)?

-----------------------------------------------------------------------------------------------------------
   тип                              размер                          границы величин
------------------------------------------------------------------------------------------------------------
         int                                  4                          - 2 147 483 648 ... 2 147 483 647
         signed int                       4                          - 2 147 483 648 ... 2 147 483 647   
         long int                           4                          - 2 147 483 648 ... 2 147 483 647
         signed long int                4                          - 2 147 483 648 ... 2 147 483 647
         
         short int                          2                          - 32 768 … 32 768
         signed short int               2                          - 32 768 … 32 768
         
         char                                1                           -128 ... 127
         signed char                     1                           -128 ... 127
------------------------------------------------------------------------------------------------------------

Автор: azesmcar 23.12.2009, 06:53
Цитата(AProjects @  23.12.2009,  02:34 Найти цитируемый пост)
Какая разница между следующими типами данных (имеется ввиду между теми, в которых одинаковы размеры и границы величин)?

размеры, которые ты описал не гарантированы. Только размер char-а установлен в 1 байт, остальные зависят от платформы.
известно только что размер long int равен как минимум размеру int, а размер short равен максимум размеру int.

Автор: bsa 23.12.2009, 11:53
Код
#include <iostream>
int main()
{
        std::cout << "sizeof(long long) = " << sizeof(long long) << '\n';
        std::cout << "sizeof(long) = " << sizeof(long) << '\n';
        std::cout << "sizeof(int) = " << sizeof(int) << '\n';
        std::cout << "sizeof(short) = " << sizeof(short) << '\n';
        std::cout << "sizeof(char) = " << sizeof(char) << '\n';
        return 0;
}
Код
$ ./prog 
sizeof(long long) = 8
sizeof(long) = 8
sizeof(int) = 4
sizeof(short) = 2
sizeof(char) = 1

$ uname -m
x86_64
Для тех кто не понял последней строчки - x86_64 - это 64-х битная архитектура операционной системы. Операционная система не Windows!!!

Автор: xvr 23.12.2009, 19:03
Более того, есть такой процессор Itanium, для него есть Intel компилятор (для Linux), и у него есть опции, которые устанавливают размер int/long/void* в 32 или 64


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)