La combinación de operaciones boleanas en los if-elseif sólo es posible en lenguajes de alto nivel.
De momento sólo se me ocurre en python
Código Python:
Ver originala,b,c = 1,2,3
if a == b == c: print "son iguales" # 1
if a == b and b == c: print "son iguales" #1
if a in range(1,3): print "está en rango del 1 al 3" # 2
if a == 1 or a == 2 or a == 3 : print "está en rango del 1 al 3" #2
En los lenguajes de bajo nivel como C (y C++) las comparaciones tienen que ser explícitas (dado que es ensamblador a alto nivel) porque la CPU sólo es capaz de realizar una operación boleana y numérica cada vez, y hasta donde sé ningún compilador permite unirlos sino que lo lee literalmente y crea una superestructura lógica de operaciones boleanas para procesador con saltos incrustados concretos que mueven el puntero de ejecución de un lado a otro, aunque sería una buena idea. Por ejemplo, puedes implementar esto, para hacer algo similar, pero usando funciones:
Código C++:
Ver originaltemplate <typename t, int n>
bool in(int a, t (&b)[n])
{
int size = sizeof(b) / sizeof(t);
int i = 0;
do
{
if (*(b+i) == a)
{
return true;
}
i++;
} while (i < size);
return false;
}
int main(){
int comp[] = {1,2,3,5,6}; // lista de números
if (in(6,comp))
{
cout << "el numero existe en la lista";
}
return 0;
}
En la función
in con que uno de los valores del array sea igual al número se retorna un
true, se continúa hasta el final, y si no se retornó finaliza en
false. El template crea el tipo
t con un número arbitrario de
índices que pasa a la función por referencia directa (&) en lugar de como puntero.
Un saludo.