dodawanie bool do int

0

Cześć, mam takie pytanie: czy w C++ można bez żadnych konsekwencji dodawać do zmiennej typu int zmienną typu bool jako wartość 0/1?

Mam następujący problem: mam w klasie jedną zmienną typu bool. Jeśli ta zmienna jest równa true to pewna tablica jest o 1 index dłuższa. Natomiast do tablicy używam pętli for więc wygodniej byłoby mi to robić tak:

for(i=0; i<num_array+zmienna_bool;i++)
tablica[i] = ...

Reasumując jak zmienna_bool będzie true to by mi wykonywało działania na tablicy o 1 dłuższej, natomiast jeśli false to będzie standardowy rozmiar tablicy. Naturalnie tablicę również zadeklarowałbym uwzględniając zmienną_bool

Z góry dzięki za pomoc.

0

Standard gwarantuje, że podczas konwersji bool na liczbę wartość false będzie 0, a true 1. To całkowicie bezpieczne.

Btw: Najmniejszym typem jaki może brać udział w obliczeniach jest int, więc wszystkie "mniejsze" typy są niejawnie konwertowane (to się nazywa integral promotion).

0

Czyli dobrze rozumiem, że nie ma sensu robienia zmiennej typu bool w tym przypadku tylko od razu nadać jej wartość int i przypisać jej wartość 1 lub 0?

Dzięki wielkie za pomoc!

0

Jeżeli typ bool odpowiada temu co ta zmienna reprezentuje - czyli jeżeli jest to coś, co ma wartość logiczną (np. bool czyDluszaOJeden; - trochę naciągane, ale typ pasuje do przeznaczenia) to zostaw bool. Z tego co piszesz wynika, że tak właśnie jest, więc moim zdaniem możesz zostawić to tak, jak jest teraz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1