int main() {    bool  b;

return  0; }

Некоторые старые компиляторы отвергнут эту программу, поскольку они не распознают bool в качестве встроенного типа.

В соответствии с проектом стандарта C++ типы bool и int не являются идентичными, что проиллюстрируем следующими (типичными) выход­ными результатами программы boolint.cpp:

sizeof(bool) = 1

sizeof(int) = 4

With B defined as bool B[100], we have

sizeof(B) = 100

Программа, которая выводит такие результаты, приведена ниже:

// boolint.cpp:   Типы bool и int различны. #include <iostream.h>

int main()

{ cout << "sizeof(bool) = " << sizeof(bool) << endl;

cout << "sizeof(int) = " << sizeof(int) << endl;

bool B[100];

cout << "With В defined as bool B[100], we have\n";

cout << "sizeof(B) = " << sizeof(B) << endl;

return 0; }

Очевидно, каждый элемент массива значений типа bool занимает один байт, тогда как при размере машинного слова в 32 бита он занимал бы 4 байта, если бы типы bool и int не различались. Можно представить еще более экономную реализацию, когда восемь булевских значений размеща­ются в одном байте, но это замедлило бы операции с этими элементами.

В следующем разделе мы обсудим дополнительные различия между версиями C++ (а также STL).


<< назад вперед >>