operator examples bitwise and c conditional

examples - ¿Cuál es la "condición" en la prueba de entrevista C?



modulus operator in c (30)

¿Sería posible imprimir Hello dos veces con una sola condition ?

if "condition" printf ("Hello"); else printf("World");


Greg escribió:

No importa lo que use para la condición, ese fragmento imprimirá "Hola" o "Mundo", pero nunca ambos.

Bueno, esto no es cierto, pero por qué querrías que imprimiera ambos, no puedo encontrar un caso de uso para. Está derrotando el punto de tener una declaración if. La posible solución "real" es no usar un si en absoluto. Preguntas tontas entrevista ... :)


Esto podría funcionar:

if (printf("Hello") - strlen("Hello")) printf("Hello") else printf("World")

Este fragmento enfatiza el valor de retorno de printf : la cantidad de caracteres impresos.


La instrucción if ejecuta una u otra de las instrucciones controladas (ambas printf en su ejemplo). No importa lo que use para la condition , ese fragmento imprimirá "Hola" o "Mundo", pero nunca ambos.

Editar: Bien, entonces es una pregunta capciosa y puedes poner lo que quieras en la condición (incluyendo una llamada a una función completa que haga lo que quieras). Pero eso no es muy interesante. No puedo creer que me hayan modificado para dar una respuesta correcta.


Muchachos muy interesantes, gracias por las respuestas. Nunca hubiera pensado poner la declaración de impresión dentro de la condición if.

Aquí está el equivalente de Java:

if ( System.out.printf("Hello").equals("") ) System.out.printf("Hello"); else System.out.printf("World");


#define CONDITION (0) if (0) {} else

o algo así.

Si ve una pregunta así en una entrevista, ¡huya tan rápido como pueda! El equipo que hace tales preguntas seguramente no será saludable.

Editar - Olvidé aclararlo - esto depende de que "lo demás" esté emparejado con el "si" abierto más cercano, y del hecho de que está escrito como "si CONDICIÓN" en lugar de si (CONDICIÓN) - el paréntesis haría que el rompecabezas no tuviera solución.


if (true) printf ("Hello"); if (false) printf ("Hello"); else printf("World");


if ( printf("Hello") == 0 ) printf ("Hello"); else printf ("World");

:-)



if (printf("Hello") < 1) printf("Hello"); else printf("World");


if(printf("Hello") == 1) printf("Hello") else printf("World")


"condition" === (printf("Hello"), 0)

Realmente cojo

int main() { if (printf("Hello"), 0) printf ("Hello"); else printf("World"); }

Prefiero el uso del operador de coma porque no tiene que buscar el valor de retorno de printf para saber qué hace el condicional. Esto aumenta la legibilidad y la facilidad de mantenimiento. :-)


Si está en Unix:

if (fork()) printf ("Hello"); else printf("World");

Ofcoures que no garantiza el orden de las impresiones


No hay amor por la exit ?

if(printf("HelloWorld"), exit(0), "ByeBye") printf ("Hello"); else printf ("World");


Abróchense los cinturones de seguridad:

#include <stdio.h> #include <setjmp.h> int main() { jmp_buf env; if (!setjmp(env)) { printf("if executed/n"); longjmp(env, 1); } else { printf("else executed/n"); } return 0; }

Huellas dactilares:

if executed else executed

¿Es esto lo que quieres decir? Lo dudo, pero al menos es posible. Usando fork también puedes hacerlo, pero las ramas se ejecutarán en diferentes procesos.


Cheeting con una declaración else vacía:

if (condition) // do if stuff else; // do else stuff

Si no te gusta el hecho de que más; es en realidad una declaración else vacía prueba esto:

for (int ii=0; ii<2; ii++) { if (condition && !ii) // do if stuff else { // do else stuff break; } }


Comenta el "else";)

if(foo) { bar(); } //else { baz(); }


Entonces ... ¿quieres ejecutar el código dentro del bloque if ... y el código dentro del bloque else ... de la misma instrucción if / else? Entonces ... deberías deshacerte de lo demás y pegar el código en el si.

if something do_this do_that end

La sentencia else está diseñada para ejecutarse solo si la instrucción if no se ejecuta y viceversa, ese es el punto completo. Esta es una pregunta extraña ...


La respuesta básica es que, en el curso normal de los acontecimientos, no desea ejecutar las instrucciones en el bloque ''if'' y el bloque ''else'' en una sola pasada del código (por qué molestarse con la condición si lo hace) ni puede ejecutas ambos conjuntos de declaraciones sin saltar a través de aros grotescos.

Algunos aros grotescos: ¡código malvado!

if (condition == true) { ...stuff... goto Else; } else { Else: ...more stuff... }

Por supuesto, es un abuso simple de (cualquier) idioma porque es equivalente a:

if (condition == true) { ...stuff... } ...more stuff...

Sin embargo, podría lograr lo que la pregunta está haciendo. Si tiene que ejecutar ambos bloques si la condición es verdadera o falsa, entonces las cosas se vuelven un poco más complicadas.

done_then = false; if (condition == true) { Then: ...stuff... done_then = true; goto Else; } else { Else: ...more stuff... if (!done_then) goto Then; }


No uses un bloque if else entonces.

EDITAR para comentar.

Podría significar que el código debe estar en ambos bloques, o antes / después del bloque si se requiere que se ejecute en ambos casos.


Simplemente coloque el código antes o después del bloque if..else.

Alternativamente, si tiene un bloque "if, else if, else" en el que desea ejecutar el código en algunas (pero no en todas) las ramas, simplemente colóquelo en una función separada y llame a esa función dentro de cada bloque.


Sin saber el valor de retorno de printf en la parte superior de tu cabeza:

if (printf("Hello") && 0) printf("Hello"); else printf("World");


Solución 1:

int main(int argc, char* argv[]) { if( argc == 2 || main( 2, NULL ) ) { printf("Hello "); } else { printf("World/n"); } return 0; }

Solución 2 (solo para Unix y Linux):

int main(int argc, char* argv[]) { if( !fork() ) { printf("Hello "); } else { printf("World/n"); } return 0; }


utilice un goto, una de las palabras clave más infrautilizadas de nuestros días


int main() { runIfElse(true); runIfElse(false); return 0; } void runIfElse(bool p) { if(p) { // do if } else { // do else } }


Dos posibles soluciones sin utilizar declaraciones printf: -

Primero :-

#include <stdio.h> int main(void) { if (!stdin || (stdin = 0, main())) printf("hello"); else printf("world"); return 0; }

Segundo

#include<stdio.h> void main() { if (1 #define else if (1) ) { printf("hello"); } else { printf("world"); } }

Referencia: - Link1 , Link2


La condición para esta pregunta es:

if(printf("hello")? 0 : 1) { }


if (printf("hello") & 0) { printf("hello"); } else { printf("world");

No es necesario preocuparse por el valor de retorno de printf.


Esto me suena como un rompecabezas de entrevista. Espero que esto esté cerca de lo que quieres.

#include <stdio.h> int main() { static int i = 0 ; if( i++==0 ? main(): 1) printf("Hello,"); else printf("World/n"); return 0 ; }

impresiones Hello, World


Abuso de preprocesamiento, con limpieza al menos.

#define else if(1) { printf("hello"); } else { printf("world"); } #undef else


#include<stdio.h> int main() { if(! printf("Hello")) printf ("Hello"); else printf ("World"); return 0; }

Porque Printf devuelve el número de caracteres que ha impreso correctamente.