All floating-point math is subject to minor amounts of round-off errors. When you say pow(2,4) you might get 3.9999999, and when you say (int)(3.99999999) you just make it worse and get 3.
Integer powers of two are ridiculously easy, since all computations are done in binary (a numbering system based on integer powers of two). If you want 24, then say (1<<4). It's fast and accurate for integers.
If you're working with mn where both m and n are integers but small, it's still going to be better to do the math with multiplication. So 43 is best calculated as 444.
The pow() routine is intended for weird cases like 3.64.8, or with large numbers like 3200062.