To elaborate, it's because of order of operations, and the fact that, when an expression has mixed integers and floating-point operands, the integers are promoted into floats to do the math.

In this case, fDegrees is a float, so 32 is converted to 32.0 and the result is a float. Next, the float is multiplied by 5, so 5 is promoted to a float, too. Finally, 9 is promoted to a float as floating-point division is done.

Code:

(fDegrees-32)*(5/9);

Here fDegrees-32 is still a float, but the parentheses mean that 5/9 is evaluated before the multiplication. Since 5 and 9 are integer literals, it does integer division, and 5/9 = 0 in integer division.

The simplest way to fix this is to use floating-point literals such as (5.0f/9.0f)

You also likely want atof() not atoi() as you're trying to parse floating-point values, not integers.