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).
<< назад вперед >>