Typy bool są mniejsze niż typy Int, dlatego zajmują mniej miejsca w pamięci. W zależności od systemu, w którym kompilujesz / dla, liczba Int może wynosić 4–8 bajtów, podczas gdy wartość Bool to 1 bajt (jak widać w tym artykule MSDN )
Połącz to z niektórymi aspektami KISS i dobrego projektu programu, i staje się oczywiste, dlaczego lepiej jest używać bool do przechowywania zmiennej, która będzie miała tylko 2 wartości.
Po co nadmiernie komplikować rzeczy za pomocą obiektu, który może przechowywać szeroki zakres wartości, skoro masz pewność, że zawsze musisz przechowywać tylko 1 z 2 różnych wartości?
Co dzieje się w systemie, który używa int, jeśli przechowujesz w nim 75? Jeśli dodano dodatkowe warunki warunkowe
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
lub
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
wtedy jesteś objęty tą sytuacją. Ale jeśli nie, to nie jesteś.
Możesz mieć również przypadek (w zależności od tego, jak zmieniasz wartość int), w którym występuje przepełnienie bufora, a wartość „resetuje” z powrotem do 0 lub dolnej granicy int (która może być gdzieś w region od -127 do −9 223 372,036,854,775,808, w zależności od architektury docelowej ). Co dzieje się wtedy w kodzie?
Jeśli jednak użyłeś bool, możesz użyć czegoś takiego:
if(continueBool == true)
return true;
else
return false;
Lub nawet:
return (continueBool== true) ? true : false;
lub nawet:
return continueBool;
W zależności od kompilatora mogą istnieć optymalizacje, które może wykonać na kodzie używającym Boolsa do przechowywania mapowanych wartości prawda / fałsz. Chociaż mogą nie istnieć optymalizacje, które może wykonać dla Ints do przechowywania odwzorowanych wartości prawda / fałsz.
Musimy również pamiętać, że C ++ (wraz z C, asemblerem i FORTRAN) służy do pisania bardzo wydajnego, małego i szybkiego kodu. Tak więc lepiej byłoby użyć Bool w tym przypadku - szczególnie jeśli jesteś zaznaczony na podstawie używania zmiennych, pamięci, pamięci podręcznej lub czasu procesora.
Podobne pytanie brzmi: dlaczego miałbym przechowywać liczbę całkowitą (wartość) w liczbach zmiennoprzecinkowych? Odpowiedź: Nie powinieneś, bo nie ma sensu.
Krótko mówiąc: Jako nauczyciel / korepetytor / wykładowca / profesor, aby omówić z tobą rozmiary różnych rodzajów wartości (na wypadek, gdybyś to przegapił) i dlaczego są one ważne w rozwoju oprogramowania.
Mam nadzieję, że to pomoże jako punkt wyjścia (mam również nadzieję, że nie wydaje się to pedantyczne)
int
jest przechowanie liczby całkowitej, a celembool
jest przechowanie wartości logicznej (true
lubfalse
). Korzystanie zbool
IMO znacznie lepiej odzwierciedla jego wykorzystanie niż używanieint
.