2016-03-20 12 views
-4

ich dieses einfache C++ Programm realisieren will:Ersetzen if-Anweisung C++

(if y>0) x=2; else x=10; 

aber ohne die Verwendung einer if Anweisung oder jede anderen Aussage wie for, while, do while, switch oder ?.

Ist es möglich? Ich wundere mich immer noch darüber.

+0

Wie würden Sie den Vergleich ohne eines der von Ihnen erwähnten Konstrukte durchführen? –

+0

Ich denke, es wäre sowohl für diejenigen, die Antworten geben, als auch für diejenigen, die auf Ihre Frage stoßen, nützlich, wenn Sie sagen, warum Sie eine solche Einschränkung haben - d. H. Keine der bedingten Aussagen verwenden. Eine mögliche Erklärung, die mir in den Sinn kommt, ist, dass Sie aus irgendeinem Grund ein Szenario simulieren, in dem ein Compiler oder eine CPU ohne JUMP-Anweisung arbeiten. – albertoql

Antwort

4

Sie können dies versuchen: x = 2 + (y <= 0) * 8; Ein boolean Ausdruck zu einem Integralwert umgewandelt wird entweder 0 oder 1, die Sie optional Summanden hinzufügen können.

1

Hier ist eine andere Option:

x = 10; 
y > 0 && (x=2); 

nicht wirklich zu empfehlen, aber es funktioniert.