29 votes

Quelle est la «condition» dans la question d'entrevue C?

Quelle est la réponse à cette question C:

Quelle est la "condition" pour que l'extrait de code suivant imprime à la fois HelloWorld!

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

83voto

Matt Dillard Points 9040
 if ( printf("Hello") == 0 )
    printf ("Hello");
else
    printf ("World");
 

:-)

21voto

Frank Krueger Points 27508
 "condition" === (printf("Hello"), 0)
 

Vraiment boiteux:

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

Je préfère l'utilisation de l'opérateur virgule car vous n'avez pas besoin de rechercher la valeur de retour de printf pour savoir ce que fait le conditionnel. Cela augmente la lisibilité et la maintenabilité. :-)

17voto

sud03r Points 6093

Cela me semble être un casse-tête d'entrevue car il est inutile de le faire dans un code de production.
J'espère que c'est proche de ce que vous voulez.

 
#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

13voto

Eli Bendersky Points 82298

Bouclez vos ceintures:

 #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;
}
 

Tirages:

 if executed
else executed
 

C'est ce que tu veux dire? J'en doute, mais au moins c'est possible. En utilisant fork vous pouvez également le faire, mais les branches s'exécuteront dans des processus différents.

11voto

GowriKumar Points 31

Si c'est sous Unix:

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

Ofcoures qui ne garantit pas l'ordre des tirages

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X