Dies verwendet nicht "switch, if else oder ternary operator"
Denken Sie daran, dass die Zuweisung nur ein gewöhnlicher Ausdruck ist und als solcher als Teil eines anderen Ausdrucks verwendet werden kann. Zum Beispiel könnten Sie die Kurzschlußlogik und den Operator verwenden:
%Vor%Sie müssen Klammern um die Zuweisung setzen, da die Zuweisung Vorrang als der Operator %code% hat .
Die gestellte Frage gibt undefiniertes Verhalten , da Sie eine nicht initialisierte Variable verwenden. Daher können Sie jeden beliebigen Code schreiben (solange er kompiliert wird).
Siehe C-Standard 6.3.2.1p2:
Wenn der Wert l ein Objekt mit automatischer Speicherdauer angibt, das hätte mit der Registerspeicherklasse deklariert werden können (hatte nie die Adresse wurde übernommen) und das Objekt ist nicht initialisiert (nicht deklariert) mit einem Initialisierer und keine Zuordnung dazu wurde zuvor durchgeführt zu verwenden), das Verhalten ist nicht definiert.
Das ist meiner Meinung nach die kluge Antwort: obwohl Sie klug sein würden, wenn Sie eine Frage auf diese Weise beantworten möchten.
Es ist eigentlich ganz einfach:
%Vor%Dies wird a mit 0 multiplizieren, wenn a gleich 25 ist, sonst wird es mit 1 multipliziert.
Wenn es Ihnen auch nicht erlaubt ist, auf Gleichheit zu prüfen, dann ist dies ein vollständig arithmetischer Weg:
%Vor%Dies verwendet nicht "switch, if else oder ternary operator"
Eine andere interessante Antwort könnte sein
%Vor%Dies verwendet nicht 'if-else', 'switch' oder 'ternary operator'
Wenn der implizierte Kontext eine Zählschleife ist, in der %code% immer den Zyklus %code% wiederholt, dann wäre vielleicht eine mathematisch attraktivere Lösung
%Vor%Aber das würde natürlich nicht funktionieren, wenn %code% irgendetwas sein kann, und es sollte nur im Fall von %code% zurückgesetzt werden, während etwas %code% übrig bleiben sollte allein.
Die Interviewer mögen es vielleicht, wenn Sie nach einer solchen "semantischen" Lösung suchen und erklären können, wann Sie diese verwenden sollen.
Ich war in einem technischen Interview, wo der Interviewer mir einen Code wie diesen gab
%Vor%Er sagte, ich solle diesen Code ohne Schalter umschreiben, wenn sonst oder ternärer Operator für die if-Bedingung. Wie kann es gemacht werden?
Ich glaube, der Interviewer wollte, dass Sie diese Zeile anstelle von %code% verwenden:
%Vor%Die gestellte Frage gibt undefiniertes Verhalten , da Sie eine nicht initialisierte Variable verwenden. Daher können Sie jeden beliebigen Code schreiben (solange er kompiliert wird).
Siehe C-Standard 6.3.2.1p2:
Wenn der Wert l ein Objekt mit automatischer Speicherdauer angibt, das hätte mit der Registerspeicherklasse deklariert werden können (hatte nie die Adresse wurde übernommen) und das Objekt ist nicht initialisiert (nicht deklariert) mit einem Initialisierer und keine Zuordnung dazu wurde zuvor durchgeführt zu verwenden), das Verhalten ist nicht definiert.
Das ist meiner Meinung nach die kluge Antwort: obwohl Sie klug sein würden, wenn Sie eine Frage auf diese Weise beantworten möchten.
Denken Sie daran, dass die Zuweisung nur ein gewöhnlicher Ausdruck ist und als solcher als Teil eines anderen Ausdrucks verwendet werden kann. Zum Beispiel könnten Sie die Kurzschlußlogik und den Operator verwenden:
%Vor% Sie müssen Klammern um die Zuweisung setzen, da die Zuweisung Vorrang als der Operator &&
hat .
Die gestellte Frage gibt undefiniertes Verhalten , da Sie eine nicht initialisierte Variable verwenden. Daher können Sie jeden beliebigen Code schreiben (solange er kompiliert wird).
Siehe C-Standard 6.3.2.1p2:
Wenn der Wert l ein Objekt mit automatischer Speicherdauer angibt, das hätte mit der Registerspeicherklasse deklariert werden können (hatte nie die Adresse wurde übernommen) und das Objekt ist nicht initialisiert (nicht deklariert) mit einem Initialisierer und keine Zuordnung dazu wurde zuvor durchgeführt zu verwenden), das Verhalten ist nicht definiert.
Das ist meiner Meinung nach die kluge Antwort: obwohl Sie klug sein würden, wenn Sie eine Frage auf diese Weise beantworten möchten.
Es ist eigentlich ganz einfach:
%Vor%Dies wird a mit 0 multiplizieren, wenn a gleich 25 ist, sonst wird es mit 1 multipliziert.
Wenn es Ihnen auch nicht erlaubt ist, auf Gleichheit zu prüfen, dann ist dies ein vollständig arithmetischer Weg:
%Vor%Dies verwendet nicht "switch, if else oder ternary operator"
Eine andere interessante Antwort könnte sein
%Vor%Dies verwendet nicht 'if-else', 'switch' oder 'ternary operator'
Wenn der implizierte Kontext eine Zählschleife ist, in der %code% immer den Zyklus %code% wiederholt, dann wäre vielleicht eine mathematisch attraktivere Lösung
%Vor%Aber das würde natürlich nicht funktionieren, wenn %code% irgendetwas sein kann, und es sollte nur im Fall von %code% zurückgesetzt werden, während etwas %code% übrig bleiben sollte allein.
Die Interviewer mögen es vielleicht, wenn Sie nach einer solchen "semantischen" Lösung suchen und erklären können, wann Sie diese verwenden sollen.
Ich war in einem technischen Interview, wo der Interviewer mir einen Code wie diesen gab
%Vor%Er sagte, ich solle diesen Code ohne Schalter umschreiben, wenn sonst oder ternärer Operator für die if-Bedingung. Wie kann es gemacht werden?
Ich glaube, der Interviewer wollte, dass Sie diese Zeile anstelle von %code% verwenden:
%Vor% Wenn der implizierte Kontext eine Zählschleife ist, in der a
immer den Zyklus 0..24
wiederholt, dann wäre vielleicht eine mathematisch attraktivere Lösung
Aber das würde natürlich nicht funktionieren, wenn a
irgendetwas sein kann, und es sollte nur im Fall von a==25
zurückgesetzt werden, während etwas a==26
übrig bleiben sollte allein.
Die Interviewer mögen es vielleicht, wenn Sie nach einer solchen "semantischen" Lösung suchen und erklären können, wann Sie diese verwenden sollen.
Tags und Links c