this C code

```
unsigned long int a, b, x;
float c, d, y;

a = 6;
b = 2;
x = a/b;

c = 6.0;
d = 2.0;
y = c/d;

printf("\n x: %d \n y: %f \n",x,y);

```

works correctly and prints out

```
x: 3 
y: 3.000000

```

however, when I change the first line to this

```
unsigned long long int a, b, x;

```

I get this output:

```
x: 3 
y: 0.000000 

```

this really boggles me... I haven't changed anything with c,d, and y - why am I getting this? I'm using gcc on linux