for (i; i <=42 ; i = i + x) { // First interation of loop i starts at 22.
}
i=2; // I is now set to 2 so next itteration and all future itterations of the loop are from 2.
That should work OK, assuming x is defined. You don't need the first "i", and something like this would probably be easier to read:
byte loopstart = 20;
void loop() {
for (i=loopstart; i<42; i+=2) {
printf("test");
}
loopstart = 2;
}