Heim > Backend-Entwicklung > C++ > Hauptteil

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

Barbara Streisand
Freigeben: 2024-10-23 22:14:29
Original
182 Leute haben es durchsucht

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!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!