print 1 to 100 without using recursion and conditions can we print 1 to 100 without using any if conditions and loops in c&amp;c++?

Conditon:
main point is you must not use recursion...and doesnt hardcode code in it
for e.g 

print(1 2 3..etc);
C (90) (79) (59) (47) (42) (40)

static int 

x=1;a(){char b[8];printf("%d\n",x++);b[24]-=5*(1-x/101);}main(){a();return 0;}


The function a which prints the numbers does not call itself! I exploited a buffer overflow and changed the return address to make the program counter go over function a again as long as I need.

I don't know if this is considered to be a recursion, but I thought it would worth trying.
This code works on my 64-bit machines with gcc 4.6, for other platforms the last statement of function a, could be a little different.

Exp1: I allocated a dummy buffer on stack b, and then addressed a passed-by-end location, which is the location of return address. I anticipated the distance between start of buffer and return address location from disassembly of function a.

Exp2: Expression 5*(1-x/101), is 5 for all x&lt;=100 and 0 for x=101. By looking at disassembly of main (in my case), if you decrease the return address by 5, you will set the PC to calling point of a again. In the updated codes, the return value of printf is used for checking loop condition.

Update: After applying ugoren's suggestions and some other changes:

x;a(){int b[2];b[3*(printf("%d\n",++x)&amp;2)]-=5;}main(){a();}


Update2: After Removing function a:

x;main(){int b[2];b[6^printf("%d ",++x)&amp;4]-=7;}


Update3:

x;main(b){(&amp;b)[1|printf("%d ",++x)&amp;2]-=7;}


Update4: Thanks to mbz :)

x;main(b){(&amp;b)[3|printf("%d ",++x)]-=7;}