Heim  >  Artikel  >  Backend-Entwicklung  >  Zeigt der Code der vierten Ausgabe der „Programmiersprache C“ ein wohldefiniertes Verhalten?

Zeigt der Code der vierten Ausgabe der „Programmiersprache C“ ein wohldefiniertes Verhalten?

Barbara Streisand
Barbara StreisandOriginal
2024-10-23 22:14:29183Durchsuche

Does Fourth Edition

Hat Code aus „The C Programming Language“ 4. Auflage ein wohldefiniertes Verhalten?

Der fragliche Code weist dennoch ein nicht spezifiziertes Verhalten auf kein undefiniertes Verhalten hervorruft. Dies liegt an der nicht spezifizierten Reihenfolge der Auswertung von Unterausdrücken, insbesondere im Hinblick auf die Aufrufe von s.replace().

Prinzip der Auswertung nicht spezifizierter Unterausdrücke

Funktion Argumente haben eine nicht spezifizierte Auswertungsreihenfolge, was bedeutet, dass die Auswertungsreihenfolge einzelner Funktionsargumente nicht angenommen werden kann. In diesem Fall wird nicht garantiert, dass die Argumente für s.find() vor oder nach s.replace() ausgewertet werden.

Auswirkungen auf die Reihenfolge der Auswertung

Je nachdem In der Auswertungsreihenfolge können die Ergebnisse von s.find() durch die Nebenwirkungen von s.replace() verändert werden. Dies liegt daran, dass s.replace() die Länge der Zeichenfolge ändert, was sich auf das Ergebnis nachfolgender s.find()-Aufrufe auswirkt.

Tatsächliche Bewertungsunterschiede

In der Wenn der Test bereitgestellt wird, wertet clang s.find("even") vor s.replace(0, 4, "") aus, während gcc sie möglicherweise in der umgekehrten Reihenfolge auswertet. Dieser Unterschied in der Reihenfolge führt zu unterschiedlichen Ergebnissen bei den verketteten Funktionsaufrufen.

C 17-Änderungen

In C 17 ist die Auswertungsreihenfolge für Postfix-Ausdrücke (wie Kettenaufrufe) wurde gestärkt. Die Initialisierung von Parametern (einschließlich Nebenwirkungen) in Funktionsargumenten erfolgt nun in unbestimmter Reihenfolge in Bezug auf andere Parameter. Dadurch wird sichergestellt, dass Code wie der betreffende Code ein genau spezifiziertes Verhalten aufweist.

Das obige ist der detaillierte Inhalt vonZeigt der Code der vierten Ausgabe der „Programmiersprache C“ ein wohldefiniertes Verhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn