poco me encontré con un código C++ como el siguiente:Ramas ambiguas if y else: ¿se define el comportamiento?
if(test_1)
if(test_2)
{
// Do stuff
}
else
exit(0);
Ésta es ambigua, ya que el compilador podría ver esto como:
if(test_1)
{
if(test_2)
{
}
else
{
}
}
o como:
if(test_1)
{
if(test_2)
{
}
}
else
{
}
Es el comportamiento de este código definido de acuerdo con cualquier estándar (C, C++)? Vi este código en un programa de C++ en VC++, que parece preferir la primera solución.
Esto no es * ambiguo *, ya que el estándar determina cómo se debe analizar, puede * parecer * ambiguo para usted, pero no es para el compilador u otros programadores que saben cómo se analiza. –
Es posible que desee leer esto: http://en.wikipedia.org/wiki/Dangling_else y esto: http://drdobbs.com/blogs/cpp/231602010. – sbi