Wäre es möglich zu drucken Hello
zweimal mit Single condition
?
if "condition"
printf ("Hello");
else
printf("World");
Ryan
Wäre es möglich zu drucken Hello
zweimal mit Single condition
?
if "condition"
printf ("Hello");
else
printf("World");
if ( printf("Hello") == 0 )
printf ("Hello");
else
printf ("World");
🙂
Für printf: Bei Erfolg wird die Gesamtzahl der geschriebenen Zeichen zurückgegeben.
– Weniger Draht
5. Januar 2015 um 12:52 Uhr
Frank Krüger
"condition" === (printf("Hello"), 0)
Wirklich lahm:
int main() {
if (printf("Hello"), 0)
printf ("Hello");
else
printf("World");
}
Ich bevorzuge die Verwendung des Komma-Operators, da Sie den Rückgabewert von nicht nachschlagen müssen printf
um zu wissen, was die Bedingung tut. Dies erhöht die Lesbarkeit und Wartbarkeit. 🙂
sud03r
Das klingt für mich wie ein Interview-Rätsel. Ich hoffe, das kommt dem nahe, was Sie wollen.
#include <stdio.h>
int main()
{
static int i = 0 ;
if( i++==0 ? main(): 1)
printf("Hello,");
else
printf("World\n");
return 0 ;
}
Drucke Hello, World
Ich denke, dies sollte die akzeptierte Antwort sein. Es werden keine Gabeln verwendet, sodass die Bestellung garantiert ist, und es wird auch kein „Hallo“ in den Zustand gedruckt. Die Ausführung geht eigentlich in die beiden Entscheidungszweige… Sonst könnte man alles in die Bedingung drucken und dann das Programm beenden, das finde ich keine sehr schlaue Lösung!
– Javi Ortiz
3. September 2014 um 11:34 Uhr
Eli Bendersky
Schnallen Sie sich an:
#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;
}
Drucke:
if executed
else executed
Ist es das was du meinst? Ich bezweifle es, aber zumindest ist es möglich. Verwenden fork
Sie können dies auch tun, aber die Zweige werden in unterschiedlichen Prozessen ausgeführt.
Wenn es auf Unix ist:
if (fork())
printf ("Hello");
else
printf("World");
Das garantiert natürlich nicht die Reihenfolge der Drucke
#define CONDITION (0) if (0) {} else
oder so etwas.
Wenn Sie eine solche Frage in einem Interview sehen, rennen Sie so schnell wie möglich weg! Das Team, das solche Fragen stellt, ist zwangsläufig ungesund.
Bearbeiten – ich habe vergessen zu klären – dies beruht darauf, dass “else” mit dem nächsten offenen “if” abgeglichen wird und dass es als “if CONDITION” und nicht als if (CONDITION) geschrieben wird – Klammern würden das Rätsel unlösbar machen.
if ( printf("Hello")==0)
sehen
[http://www.coders2020.com/what-does-printf-return]
(matt korrigiert mein =, danke, C ist weit weg)
http://www.geekinterview.com/question_details/65997
– ceejayoz
28. August 2008 um 19:41 Uhr
Ich meine, was sollte Code in der ‘if’-Bedingung sein, wenn wir Code in beiden Blöcken ausführen wollen?
– Benutzer215968
21. November 2009 um 6:13 Uhr
Das ist eine blöde Fangfrage. Die Frage war wahrscheinlich eher so: stackoverflow.com/questions/33199/… und die Antworten sind da.
– Greg Hewgill
21. November 2009 um 6:22 Uhr
Die Antwort ist: Du willst nicht irgendwo arbeiten, wo solche dummen Fragen gestellt werden.
– Laurence Gonsalves
21. November 2009 um 6:33 Uhr
Duplikat? Ich denke nicht! Die meisten Antworten im “Duplikat” sind nicht so interessant wie die Antworten hier. Zum Teil, weil die Frage ist komplett anders. Hier wollen wir beide Zweige ausführen, in der anderen Frage war die Anforderung, eine Bedingung zu schaffen, die eine bestimmte Ausgabe bewirkt. Sehr unterschiedliche Fragen mit sehr unterschiedlichen Antworten. Der eine testet Ihr Wissen über goto-ähnliche Konstrukte, der andere testet Ihr Bewusstsein für Nebenwirkungen von Bedingungen.
– mlibby
21. November 2009 um 12:47 Uhr