cfloating-pointinteger-arithmeticbinary-operators

Division in C language


Hello fellas hope you all doing well i am kinda newbie in C language, I just need to ask a basic question that is that when i divide numbers in C like this:

#include<stdio.h>
main()
{
   float a = 15/4;
   printf("%.2f", a);
}

the division happens but the answer comes in a form like 3.00(which is not correct it did'nt count the remainders) But when i program it like this:

#include<stdio.h>
main()
{
   float a = 15;
   float b = 4;
   float res = a/b;
   printf("%.2f", res);
}

this method gives me the correct answer. So i want to ask the reason behind the difference b/w these two programs why doesn't the first method works and why the second method working?


Solution

  • In this expression

    15/4
    

    the both operands have integer types (more precisely the type int). So the integer arithmetic is performed.

    If at least one operand had a floating point type (float or double) as for example

    15/4.0
    

    or

    15/4.0f
    

    then the result will be a floating point number (in the first expression of the type double and in the second expression of the type float)

    And in this expression

    a/b
    

    the both operands have floating point types (the type float). So the result is also a floating point number.