Programmet giver følgende output: Kroppen af while-løkken udføres altså 10 gange. Hvis ++i ertattes af i++ udskrives en ekstra potens af 2: Hvorfor? Fordi ++i starter med at tælle i op inden der sammenlignes med 10. i++ returnerer værdien af i til sammenligning med 10, inden optælling. Programmet i opgaven: er svært at forstå, primært på grund af incrementet af variablen i i det logiske udtryk i while-løkken. Her er det omskrevne program, som adskiller assignments fra udtryk: Dette program er - efter min bedste overbevisning - et bedre program end det fra opgaveteksten. Programmet kan også skrives med brug af en for-løkke, hvor for-løkken både kontrollerer variablene i og power: Bemærk brugen af kommaet i udtrykket, som indgår i initialiserings-delen af for-løkken.
I C er , en operator, med lavest mulig prioritet. x,y er et udtryk på lige fod med x+y. Værdien af udtrykket x,y er y. x er altså kun nyttig i forhold den sideeffekt den har (typisk på variable). 2 4 8 16 32 64 128 256 512 1024
2 4 8 16 32 64 128 256 512 1024 2048
#include <stdio.h>
int main(void){
int i = 0, power = 1;
while (++i <= 10)
printf("%5d", power *= 2);
printf("\n");
return 0;
}
#include <stdio.h>
int main(void){
int i = 1, power = 1;
while (i <= 10){
power = power * 2;
printf("%5d", power);
i++;
}
printf("\n");
return 0;
}
#include <stdio.h>
int main(void){
int i, power;
for(i = 1, power = 2; i <= 10; i++, power *= 2)
printf("%5d", power);
printf("\n");
return 0;
}