Αυτό που μάλλον θες να πεις μπορεί να γραφεί ως εξής, αλλά δεν θα το έλεγα ιδιαίτερα όμορφο:
int n = 10;
int i, u;
for (i = 0, u = 0; i < n && u < 2 * n; i++, u += 2) {
printf("%d %d\n", i, u);
}
Ένα for loop έχει ακριβώς 3 σκέλη που χωρίζονται με ;
, το κάθε ένα από τα οποία έχει μία συγκεκριμένη σημασία. Στο πρώτο κάνεις τις πρώτες αναθέσεις, στο δεύτερο βάζεις τη συνθήκη σου και στο τρίτο τις προσαυξήσεις που εκτελούνται σε κάθε επανάληψη. Δεν βγάζει δηλαδή νόημα αν βάλεις παραπάνω ;
.
Το τι κάνει το κόμμα εκεί πέρα είναι κάτι που θα ήθελα να μην επεκταθώ :)
Αν θες να κάνεις πολύπλοκα πράγματα, ίσως θα έπρεπε να το γράψεις με while. Τέτοιο for loop θα μου φαινόταν λογικό σε πολύ ειδικές περιπτώσεις. Ειδικά στο παράδειγμά σου, δεν έχει νόημα η δεύτερη μεταβλητή· μπορείς να βάλεις u = 2 * i
σαν πρώτη εντολή του loop, οπότε θα είναι πολύ πιο καθαρός ο κώδικάς σου.