Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno non-void function

Zdravím,

prosím vás, může mně někdo vysvětlit, proč funkce typu:

int funkce(argumenty){

if (výraz) {
  if (výraz) {
    *id = id1->id2;
    return 1;
  }
  else {
    funkce(id1->left);
    funkce(id1->right);
  }
}
else
  return 0
}

při překladu hlásí warování: warning: control reaches end of non-void function [-Wreturn-type]
Přece vracím hodnotu typu int.
Děkuju.

Předmět Autor Datum
A co vracíš tady? else { funkce(id1->left); funkce(id1->right); }
Wikan 23.11.2012 17:49
Wikan
Rekurzivně volám tu samou funkci.
Luk 23.11.2012 17:50
Luk
Ale nic tam nevracíš.
Wikan 23.11.2012 17:51
Wikan
Potom to ale nefunguje, jak by mělo. Mělo by to procházet bin. strom rekurzivně a hledat zadaný pvek…
Luk 23.11.2012 17:56
Luk
Ale funguje. Jenom ten výsledek musíš vrátit.
Wikan 23.11.2012 18:03
Wikan
Nejsem si jistý tím, jak to myslíš. Nefunguje mi to správě. Když tam přidám return false, pak mi to…
Luk 23.11.2012 18:07
Luk
else { int ret = funkce(id1->left); if (ret != 1) ret = funkce(id1->right); return ret; }
Wikan 23.11.2012 18:12
Wikan
Děkuju, funkci jsem předělal a funguje. poslední
Luk 23.11.2012 18:19
Luk

Zpět do poradny Odpovědět na původní otázku Nahoru