In general, I always use Ints. I know that in theory this is not the best practice, though, since you should use the smallest data type that will be guaranteed to store the data.
For example, it's better to use tinyint when you know that the only data you will store is a 1, 0 or null (with a very small chance of expanding that to a 2 or 3 later).
However, the only reason I know for doing this is for storage purposes--using 1 byte on a row instead of 4 bytes.
What are the impacts of using tinyint (or smallint or even bigint) over just int, other than saving space on your hard drive?