Wo sind MIN
y MAX
in C definiert, wenn überhaupt?
Wie lassen sich diese am besten implementieren, und zwar so generisch und typsicher wie möglich? (Compiler-Erweiterungen/Builtins für Mainstream-Compiler bevorzugt.)
Wo sind MIN
y MAX
in C definiert, wenn überhaupt?
Wie lassen sich diese am besten implementieren, und zwar so generisch und typsicher wie möglich? (Compiler-Erweiterungen/Builtins für Mainstream-Compiler bevorzugt.)
<?, >?, <?=, >?=
In einer sehr alten Version des GCC gab es die Operatoren <?, >?
(siehe aquí (hier war es in C++, aber ich glaube, es galt damals auch als C-Erweiterung) Ich habe auch die Operatoren gesehen <?=, >?=
die den Zuweisungsanweisungen entsprechen.
Die Operanden wurden einmal ausgewertet und ermöglichten sogar eine sehr kurze Zuweisungsanweisung. Sie ist sehr kurz im Vergleich zu üblichen Min/Max-Zuweisungen. Es gibt nichts, was dies übertreffen kann.
Diese waren eine Abkürzung für Folgendes:
min(a, b) === a < b ? a : b === a <? b;
max(a, b) === a > b ? a : b === a >? b;
a = min(a, b); === if(b < a) a = b; === a <?= b;
a = max(a, b); === if(b > a) a = b; === a >?= b;
Die Suche nach dem Minimum ist sehr übersichtlich:
int find_min(const int* ints, int num_ints)
{
assert(num_ints > 0);
int min = ints[0];
for(int i = 1; i < num_ints; ++i)
min <?= ints[i];
return min;
}
Ich hoffe, dass dies eines Tages wieder in den GCC aufgenommen wird, denn ich halte diese Betreiber für genial.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.