Gleicher Maschinencode bei for und while?
-
Ich wollte fragen ob folgende Codes den gleichen Maschinencode erzeugen:
for(i = 0, i>5,i++) { }und
while(i>5) { i= 0; i ++; }
-
Nein.
-
nö. aber machte beim while die initialisierung vor die schleife, wird der gleiche code erzeigt.
der msvc kann lustigerweise mit for besser umgehen, das rafft der optimierer mehr und manchmal kommt besserer code raus.
-
Trotzdem sind for- und while-Schleifen nicht das gleiche.
int i = 0; while (i < 5) ++i;ist nicht dasselbe wie
for (int i = 0; i < 5; ++i) ;Bei ersterem ist die Variable i im Namensbereich über while zu sehen, während das for i nur im Namensbereich der for-Schleife sichtbar ist, also so:
{ int i = 0; while (i < 5) ++i; }
-
erzeugt trotzdem in den meisten fällen den gleichen code

-
Nur, dass der Maschinencode dem gemeinen C++-Programmierer ziemlich am Hinterteil vorbeigeht. Compilerfehler aber nicht

-
.filmor schrieb:
Nur, dass der Maschinencode dem gemeinen C++-Programmierer ziemlich am Hinterteil vorbeigeht.
mir nicht
-
[quote="TravisG"]Ich wollte fragen ob folgende Codes den gleichen Maschinencode erzeugen:
[quote]das hängt vom verwendeten Compiler ab - für welchen Compiler willst du den es wissen?
-
ich arbeite mit visual studio .NET 2003
-
weißt du was ein Disassembler ist? glaubst du dass du einen bedienen kannst?

-
Vertexwahn schrieb:
weißt du was ein Disassembler ist? glaubst du dass du einen bedienen kannst?

Du feuerst gern mit Atomwaffen auf eine Mücke, gell?
Assembleroutput des Compilers ausgeben und fertig.
-
(Assembleroutput == Disassembler == für mich ;))