Hallo Andreas,
int main (void)
{
int i;
for (i = 0; i < 10000000; i++) 1<<8;return 0;
}
> Wenn ich bei dem C-Programm keinen Bock geschossen habe, würde ich sagen, es lohnt sich ;-)
Doch, ich würde sagen, du hast. ;-)
Denn ich kenne genug Beispiele für Compiler, die schon beim Übersetzen erkennen, dass der Ausdruck 1<<8 nur aus Konstanten besteht, das Ergebnis also auch eine Konstante ist, und daher gleich den konstanten Wert in den Code einsetzen.
Da der Ausdruck als Anweisung außerdem keine Auswirkungen hat, könnte ich mir sogar vorstellen, dass ein "schlauer" Compiler die Anweisung komplett wegoptimiert, so dass nur noch
> for (i=0; i<10000000; i++);
übrigbleibt. Dann misst du eigentlich nur den Overhead der for-Schleife.
So long,
Martin
--
Wenn zwei dasselbe tun, sind sie vielleicht bald zu dritt.