Skąd to UB?

0
void prostokat::rysuj(const char *czypelny = "niepelny")
{
  [...]
  if(czypelny == "niepelny")
  [...]
}

W linijce z ifem mam:

ostrzeżenie:comparison with string literal results in unspecified behaviour [-Waddress]
   if(czypelny == "niepelny")
                  ^

Chociaż ten if działa poprawnie. Jakoś nie mogę tego zrozumieć.

0

W ten sposob sie const charow nie porownuje.

Strcmp

1

strcmp()

2

Porownales 2 wskaźniki. jedyny powód ze to działa jest taki ze kompilator zauważył ze 2 razy używasz tego samego literału i w kodzie wynikowym umieścił ten literał raz a przy odwołaniach do niego używa tego samego adresu.

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