Изучая эти таблицы, обратите внимание на количество битов, выделяемых для хранения коротких, длинных и обычных целочисленных значений. Заметьте: в большинстве 16-разрядных сред размер (в битах) обычного целочисленного значения совпадает с размером короткого целого. Также отметьте, что в большинстве 32-разрядных сред размер (в битах) обычного целочисленного значения совпадает с размером длинного целого. "Собака зарыта" в С++-определении базовых типов. Согласно стандарту C++ размер длинного целого должен быть не меньше размера обычного целочисленного значения, а размер обычного целочисленного значения должен быть не меньше размера короткого целого. Размер обычного целочисленного значения должен зависеть от среды выполнения. Это значит, что в 16-разрядных средах для хранения значений типа
Несмотря на разрешение, использование модификатора
Различие между целочисленными значениями со знаком и без него заключается в интерпретации старшего разряда. Если задано целочисленное значение со знаком, С++-компилятор сгенерирует код с учетом того, что старший разряд значения используется в качестве
Целочисленные значения со знаком используются во многих алгоритмах, но максимальное число, которое можно представить со знаком, составляет только половину от максимального числа, которое можно представить без знака. Рассмотрим, например, максимально возможное 16-разрядное целое число (
0 1111111 11111111
Если бы старший разряд этого значения со знаком был установлен равным
Чтобы понять различие в С++-интерпретации целочисленных значений со знаком и без него, выполним следующую короткую программу.
#include
using namespace std;
/* Эта программа демонстрирует различие между signed- и unsigned-значениями целочисленного типа.
*/
int main()
{
short int i; // короткое int-значение со знаком
short unsigned int j; // короткое int-значение без знака
j = 60000;
i = j;
cout << i << " " << j;
return 0;
}
При выполнении программа выведет два числа:
-5536 60000
Дело в том, что битовая комбинация, которая представляет число
В C++ предусмотрен сокращенный способ объявления
unsigned х;
unsigned int у;
Переменные типа
// Эта программа выводит алфавит в обратном порядке.
#include
using namespace std;
int main()
{
char letter;