2

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?

Vlad from Moscow
  • 301,070
  • 26
  • 186
  • 335
Mac
  • 74
  • 1
  • 11
  • 2
    `15/4` is integer (i.e. truncating) division, because both of the operands are of type `int`. In C, the type of division you get depends on the types of the operands. In some programming languages, truncating division and fractional division proper have different operator names; in C, they share the same token which is resolved by the compiler via a kind of operator overloading (though C doesn't have user-definable operator overloading, it has *de facto* built-in overloading). – Kaz Oct 25 '21 at 20:48
  • 1
    Both answers are correct. The "/" symbol between two integers denotes integer division. – Lee Daniel Crocker Oct 25 '21 at 20:49
  • Ugh, I voted it as a duplicate without seeing that the duplicate I voted for was for python! – Kevin Oct 25 '21 at 20:49
  • Thanks guys i got my answer!! – Mac Oct 25 '21 at 20:53

2 Answers2

4

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.

Vlad from Moscow
  • 301,070
  • 26
  • 186
  • 335
1

When you state your varable to float you automatically casting the values he get from the equation. For example: Float a = 2/4 it's like writing float a = float(equation). Take care, Ori