Hola:
Respecto a lo primero, pues si, no tiene mucho sentido distinguir si el saldoTotal es 0 o no.
Porque esto:
y esto:
Código C++:
Ver originalsaldoTotal = saldo + saldoTotal;//saldoTotal = saldo + 0
Es lo mismo cuando saldoTotal es = a 0, luego no ha lugar la distinción.
Respecto a los if excluyentes....bueno, no sé si es muy correcto llamarlos así
, pero más o menos:
Esta forma:
Código C++:
Ver originalif(condicion)
{
haz una cosa
}
if(otra condicion)
{
haz otra cosa
}
implica que lo que sea va a ser evaluado dos veces, primero para ver si cumple "condicion" y luego para ver si cumple "otra condicion". Es el caso de tu código.
Por otro lado, si hago así:
Código C++:
Ver originalif(condicion)
{
haz una cosa
}
else if(otra condicion)
{
haz otra cosa
}
La segunda condición no se evaluará si se ha cumplido la primera.
Y queda:
Código C++:
Ver originalif(condicion)
{
haz una cosa
}
else
{
haz otra cosa
}
En este caso se ejecutará el bloque después del else si no se cumple la primera condición.
Mira este ejemplo:
Código C++:
Ver originalint main()
{
int num=100;
if (num==100)
{
cout<<"numero = 100"<<endl;
}
if (num>50)
{
cout<<"numero > 50"<<endl;
}
}
En este caso la variable num cumple la doble condición, es = 100 y es > 50
Tal como está el código va a evaluar las dos condiciones y si son ciertas va a ejecutar el bloque que hay dentro.
Pero si cambias la línea:
if (num>50)
por
else if (num>50)
verás que aún siendo cierta la segunda condición no se evalúa (y por tanto no se ejecuta) ya que al ser cierta la primera condición no se sigue evaluando.