Run if (or similar) statement once

Why they are printed to serial? Simply for this initial debugging purpose, checking that they work as I expect.

Then, I'd expect it to happen as soon as the value was calculated.

Is it okay then to do 3 * tooth_spacing * 1000000UL, or do I need to specify the other terms as UL?

The largest type in any computation defines the type/size of registers used to perform the calculation. As long as one term is UL, the whole calculation is UL.