Ya entendí, el problema es que el operador lógico debe ser &&.
¿Por qué?
Porque la extensión NO debe ser NINGUNA de las opciones listadas.
Entonces con || podría acertar en una comparación, pero no en otra, es decir:
Cita: x = 1;
((x != 1) || (x != 2))
Entonces, ¿x no es igual a 1? FALSO, sí es igual a 1, al ser FALSO continúa con la siguiente comparación.
Entonces, ¿x no es igual a 2? CIERTO, 2 es diferente de 1, al ser CIERTO entra a la condición.
Pero si aplicamos && sucede así:
Cita: x = 1;
((x != 1) && (x != 2))
Entonces, ¿x no es igual a 1? FALSO, sí es igual a 1, al ser FALSO continúa con la siguiente comparación.
Entonces, ¿x no es igual a 2? CIERTO, 2 es diferente de 1, pero el resultado previo es FALSO entonces no puede ser CIERTO y FALSO a la vez, ya no entra a la condición.
Entonces, para que entre a la condición todas las condiciones deberían ser CIERTAS.