1 struct X { int flag; int pos; }; foo(struct X * a,struct X * b)2 int foo(struct X *a, struct X *b) 3 { 4 while (1) 5 { 6 if (a->flag) 7 break; 8 ({ struct X *tmp = a; a = b; b = tmp; }); 9 } 10 11 return a->pos + b->pos; 12 } 13