Типи bool менші, ніж Int, тому використовують менше місця в пам'яті. Залежно від системи, для якої ви компілюєте / для, Int може бути 4 - 8 байт, тоді як Bool - 1 байт (як це видно в цій статті MSDN )
Поєднайте це з деякими аспектами KISS та хорошим дизайном програми, і стає очевидним, чому краще використовувати bool для зберігання змінної, яка матиме лише 2 значення.
Навіщо надмірно ускладнювати речі об’єктом, який може зберігати широкий діапазон значень, коли ви впевнені, що вам потрібно коли-небудь зберігати 1 з 2 різних значень?
Що відбувається в системі, яка використовує int, якщо ви зберігаєте там 75? Якщо ви додали додаткові умови
if (value >= 0 )
return true; //value is greater than 0, thus is true
else
return false; //value is 0 or smaller than 0, thus is false
або
if (value == 0)
return false; //value is greater than 0, thus is true
else if (value == 1)
return true; //value is 0 or smaller than 0, thus is false
то ви охоплені цією ситуацією. Але якщо ви цього не зробили, то й ні.
Ви також можете мати випадок (залежно від того, як ви змінюєте значення int), коли у вас є перевиконання буфера, і значення "скидає" назад до 0 або нижньої межі вашого int (яка може бути десь у регіоні від -127 до −9,223,372,036,854,775,808, залежно від цільової архітектури ) що відбувається з вашим кодом?
Однак якщо ви використовували bool, ви можете використовувати щось подібне:
if(continueBool == true)
return true;
else
return false;
Або навіть:
return (continueBool== true) ? true : false;
або навіть:
return continueBool;
Залежно від компілятора, можливі оптимізації, які він може виконувати на код, який використовує Bools для зберігання відображених істинних / хибних значень. Тоді як оптимізація, яку вона може виконувати для Ints, що використовується для зберігання відображених істинних / хибних значень, може бути не визначено.
Ми також повинні пам’ятати, що C ++ (разом із C, Assembly та FORTRAN) використовується для написання високоефективного, малого та швидкого коду. Отже, було б краще використовувати Bool в цьому випадку - особливо якщо ви позначаєтесь на використанні змінних, пам'яті, кешу або часу процесора.
Аналогічне запитання було б: чому я б зберігав ціле число (значення) у плавці? Відповідь: Не слід, бо немає сенсу.
Коротка розповідь: як ваш вчитель / репетитор / викладач / професор повинен переглядати розміри різних типів цінності з вами (якщо ви їх пропустили), і чому вони важливі в розробці програмного забезпечення.
Я сподіваюся, що це допомагає як відправна точка (я також сподіваюся, що це не сприймається як педантичне)
int
- це збереження цілого числа, а мета abool
- зберігання булевого значення (true
абоfalse
). Використанняbool
IMO відображає його використання набагато краще, ніж використанняint
.