¿Es posible ejecutar tanto si como parte de una instrucción de control if-else?

Posible duplicado:
Pregunta estúpida sobre la ejecución simultánea de If-Else en C ++ o C

¿Es posible poner alguna condición, de modo que tanto si parte como parte de una instrucción de control if … else puede ejecutarse sin ninguna advertencia o error?

¡No utilice! 😉

Sí, por fork .

 if ( fork() ) { printf("if\n"); } else { printf("else\n"); } 

No hay casos de uso reales que prefieran el código anterior, a menos que sea para ejecución paralela.

No, no hay forma de escribir una cláusula Schrödinger si.

Es posible que pueda ejecutar ambos con un goto, pero nunca pasaría una revisión de código.

No, eso no es posible (dentro del mismo proceso).

Si es posible:

 #include  #define else if (1) int main(void) { int test = 1; if (test == 1) { printf("if\n"); } else { printf("else\n"); } return 0; } #undef else 

Una nota para los novatos: ¡Nunca hagas esto en la vida real! En su lugar, piensa en tu problema otra vez …

Lo que probablemente quisiste es:

 #include  int main(void) { int one_condition = 1; int other_condition = 2; if ((one_condition == 1) || (other_condition == 2)) { printf("if\n"); } if ((one_condition != 1) || (other_condition == 2)) { printf("quasi-else\n"); } return 0; } 

Puede reemplazar la ruta else si tiene otra cláusula if con condiciones negadas. Esto le da la posibilidad de anularlo con una segunda condición.

Tal vez has entendido mal tu problema.

Si desea que se ejecute un bloque de código independientemente de la condición, elimínelo de la instrucción if … else.

 void foofunc(int n) { a = 44*n; if(a == 484) { //do something } else { //do something if a DOES NOT equal 484 } //do something regardless of the outcome of the test. } 

En este ejemplo, por ridículo que sea, la última línea está fuera de la statement de condición, por lo que se ejecutará si == 484 o no, lo que me parece lo mismo que hacer que c active su bloque else , independientemente de if prueba tiene éxito .

Por supuesto, los bloques de else no son obligatorios, por lo que si no le importa lo que suceda si su condición falla, entonces simplemente no tiene un bloque de else.

 void foofunc(int n) { a = 44*n; if(a == 484) { //do something } //do something regardless of the outcome of the test. } 

¿Supongo que está intentando que se ejecuten las dos twigs de este tipo de statement?

 Dim X As Boolean X = False If X = True Then ... Else ... End If 

Podría lograr que se ejecute utilizando GoTo … pero eso va en contra de las buenas prácticas de progtwigción.

 Dim X As Boolean X = False If X = True Then ... Goto ElseStuff Else ElseStuff: ... End If 

En lugar de eso, debe escribir procedimientos / funciones independientes para lograr el comportamiento que le gustaría ejecutar en ambas declaraciones … o simplemente colocar el código que debería ejecutarse en todos los casos fuera del bloque If.

Eso sería funcionalmente equivalente a usar el GoTo, además de que queda claro para cualquier otra persona.