Pregunta

Sería posible imprimir Hello doble de uso individual condition?

if  "condition"
  printf ("Hello");
else
  printf("World");
¿Fue útil?

Solución

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

:-)

Otros consejos

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

Realmente cojo:

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

Yo prefiero el uso de la coma operario, debido a que usted no tiene que buscar el valor de retorno de printf con el fin de saber lo que el condicional no.Esto aumenta la legibilidad y mantenibilidad.:-)

Esto me suena a alguna entrevista de puzzle.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 ;
}

imprime Hello, World

Hebilla de su cinturón 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;
}

Impresiones:

if executed
else executed

Es esto lo que quieres decir?Lo dudo, pero al menos es posible.El uso de fork usted puede hacerlo también, pero las ramas se ejecutan en los diferentes procesos.

Si es que en Unix:

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

Ofcoures que no garantiza el orden 0f las impresiones

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

o alguna de esas.

Si ves una pregunta en una entrevista, correr tan rápido como puedas!El equipo que hace tales preguntas es obligado a ser perjudicial para la salud.

Edit - me olvidé de aclarar - esto depende de la "cosa" que sea emparejado con el más cercano abierta "si", y en el hecho de que fue escrito como "si la CONDICIÓN de" en lugar de si (CONDICIÓN) - paréntesis haría el rompecabezas irresoluble.

if ( printf("Hello")==0)

ver [http://www.coders2020.com/what-does-printf-return]

(matt corregido mi =, gracias, C está lejos)

El if instrucción se ejecuta uno o el otro de la controlada declaraciones de ambos printf en el ejemplo).No importa lo que se utiliza para condition, que código imprimir "Hola", o "Mundo", pero nunca ambos.

Editar:Bien, es una pregunta con trampa y puedes poner lo que quieras en la condición (incluyendo un llamado a toda otra función que hace cualquier cosa que usted desea).Pero eso no es interesante.Yo no puedo creer que me downmodded para dar una respuesta correcta.

Comentario de la "cosa" ;)

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

Sin conocer el valor de retorno de printf fuera de la parte superior de su cabeza:

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

La respuesta básica es que en el curso normal de los eventos que usted no desea ejecutar tanto las declaraciones en el 'si' bloque y el 'otro' bloque en una sola pasada a través del código (¿por qué molestarse con la condición de que si lo hacen) ni se puede ejecutar ambos conjuntos de instrucciones sin saltar a través de grotesco aros.

Algunos grotesco aros y el mal el código!

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

Por supuesto, se trata de una llanura abuso de (cualquier) idioma porque es equivalente a:

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

Sin embargo, se puede lograr lo que la pregunta está pidiendo.Si tiene que ejecutar los dos bloques de si la condición es verdadera o falsa, entonces las cosas se ponen un poco más complicado.

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

    return 0;
}

void runIfElse(bool p)
{
    if(p)
    {
     // do if
    }
    else
    {
     // do else
    }
}
if  (true) printf ("Hello"); if (false)
    printf ("Hello");
else
    printf("World");

No hay amor por exit?

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

Así que...se desea ejecutar el código dentro del bloque if...y el código dentro del bloque else...de la misma if/else?Entonces...usted debe deshacerse de la persona y el palo taht código en el si.

if something
  do_this
  do_that
end

La instrucción else está diseñado para ejecutar sólo si la si la instrucción no se ejecuta y viceversa, que es el punto entero.Esta es una pregunta extraña...

Esto podría funcionar:

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

Este fragmento hace hincapié en el valor de retorno de printf:El número de caracteres impresos.

Sólo hay que poner el código antes o después de la if..else bloque.

Alternativamente, si usted tiene un "if, else if, else" bloque donde se desea ejecutar código en algunas (pero no todas) de las ramas, acaba de poner en una función separada y llame a esa función dentro de cada bloque.

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 (Sólo para Unix y Linux):

int main(int argc, char* argv[])
{   
    if( !fork() )
    {
        printf("Hello ");   
    }
    else
    {
        printf("World\n");
    }
    return 0;
}
 #include<stdio.h>
  int main()
{
 if(! printf("Hello"))
     printf ("Hello");
else
    printf ("World");
 return 0;
}

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

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

Greg escribió:

No importa lo que usted utiliza para la condición, de que el fragmento se imprima "Hola", o "Mundo", pero nunca ambos.

Bueno, esto no es cierto, pero ¿por qué iba a quiero imprimir tanto, no puedo encontrar un caso de uso para.Es derrotar al punto de tener una instrucción if.El probable "real" de la solución es que no se utilice en todo caso.Tontas las preguntas de la entrevista...:)

Muy interesante chicos, gracias por las respuestas.Yo nunca habría pensado en poner la instrucción de impresión dentro de la condición if.

Aquí está el Java equivalente:

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

No usar un if else bloque.

EDITAR un Comentario.

Se podría entonces decir que el código de estar en ambos bloques, o antes/después de que el bloque si es necesario ejecutar en ambos casos.

usar un goto, uno de los más infrautilizados palabras clave de nuestro día a día

Cheeting con un vacío else:

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

Si no te gusta el hecho de que los demás;es en realidad un vacío else intente esto:

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

Dos Soluciones posibles sin el uso de printf declaraciones :-

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

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

No hay necesidad de preocuparse por el valor de retorno de printf.

El abuso de preprocesamiento - con la limpieza por lo menos.


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

La condición para esta pregunta es:

 if(printf("hello")? 0 : 1) {   }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top