Читаю С.Прата "Язык программирования С++" 6-е изд. 2012 год. Есть пример по типам short, int, long, long long. Вот сам код примера:
// limits.cpp -- some integer limits#include <iostream> #include <climits> // use limits.h for older systemsint main(){ using namespace std; int n_int = INT_MAX; // initialize n_int to max int value short n_short = SHRT_MAX; // symbols defined in climits file long n_long = LONG_MAX; long long n_llong = LLONG_MAX; // sizeof operator yields size of type or of variable cout << "int is " << sizeof (int) << " bytes." << endl; cout << "short is " << sizeof n_short << " bytes." << endl; cout << "long is " << sizeof n_long << " bytes." << endl; cout << "long long is " << sizeof n_llong << " bytes." << endl; cout << endl; cout << "Maximum values:" << endl; cout << "int: " << n_int << endl; cout << "short: " << n_short << endl; cout << "long: " << n_long << endl; cout << "long long: " << n_llong << endl << endl; cout << "Minimum int value = " << INT_MIN << endl; cout << "Bits per byte = " << CHAR_BIT << endl; // cin.get(); return 0;}
int is 4 bytes.short is 2 bytes.long is 8 bytes.long long is 8 bytes.Maximum values:int: 2147483647short: 32767long: 9223372036854775807long long: 9223372036854775807Minimum int value = -2147483648Bits per byte = 8
Уточните еще разрядность ОС - x86 или x64. Возможно, что в g++ x64 просто эти два типа имеют одинаковый размер для хранения значений, соответственно и их максимальное значение тогда совпадает.
У меня Kubuntu 12.10 x64 Автор книги пишет, что пример запускал на Win7х64. Какой именно не уточняет.
Тут все дело в компиляторе, так что можно это считать особенностью g++ x64. Да, и у меня такие же резкльтаты, так что не смертельно.
Спасибо.
На самом деле в стандарте языка C++ не оговорены конкретные значения размеров типов. Оговорено только то, что одинаковые знаковые и беззнаковые типы имеют одинаковые размеры, и размер меньшего типа всегда не превосходит размера большего типа.
Подробнее о форматировании
Уточните еще разрядность ОС - x86 или x64.
Возможно, что в g++ x64 просто эти два типа имеют одинаковый размер для хранения значений, соответственно и их максимальное значение тогда совпадает.
У меня Kubuntu 12.10 x64
Автор книги пишет, что пример запускал на Win7х64. Какой именно не уточняет.
Тут все дело в компиляторе, так что можно это считать особенностью g++ x64.
Да, и у меня такие же резкльтаты, так что не смертельно.
Спасибо.
На самом деле в стандарте языка C++ не оговорены конкретные значения размеров типов. Оговорено только то, что одинаковые знаковые и беззнаковые типы имеют одинаковые размеры, и размер меньшего типа всегда не превосходит размера большего типа.
Отправить комментарий