int x; != int x=0;

Okay, so here is a more detailed explanation.

for (int x; x<3; x++) {}

would not run, unless I used:

Serial.println(x)

inside of the loop. No other operation (that I could think to use) on x would cause the loop to run. Only a println.

I assumed x was going to be initialized as 0, but that didn't seem to be the case. It was only accidental that I realized sending the value of x over the serial port caused the loop to run. I'm not entirely sure why that was the case, but like I said lesson learned (for now). Don't assume the compiler will initialize your variables.