Null, false, 0 w if-ie

0

Cześć,
mam pytanie czy w instrukcji 'if' wartości typu null i 0 zawsze zamieniane są na false? tzn. jeśli mam wskaźnik na zmienną, który ma wartość null to czy sprawdzając go w if-ie zawsze otrzymam false? Tzn.

int* wsk = null;
if(wsk)
{/*...*/}

Czy powyższy kod nigdy się nie wykona czy może null != 0 != false i taki zapis to UB?

2

NULL to tylko makro na 0, a 0 jest zawsze rzutowane na false.

Niemniej używaj nullptr. Nie chcesz przypadkowych rzutowań z NULL do liczby.

0

@twonek dzięki za odpowiedź.
A nullptr również jest rzutowane na false czy może to jest false jako takie?

2

Nie rozumiem co to znaczy false jako takie.
Tak, nullptr się rzutujeniejawnie konwertuje na false, więc używaj bez obaw.

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