0

Can anyone please explain the calculation procedure?

int foo(int x, int y) { return x + y; } int foo(double x, double y) { return x * y } int main() { cout<<foo(3.8,8.0); } I know the result is 30 but I can't figure out exactly how it works. Thanks :)

9th Oct 2021, 4:33 PM
Qius
Qius - avatar
4 Réponses
+ 5
Briefly, arguments 3.8 and 8.0 are not integers.So, second function works. 3.8*8.0=30.4 But function data type is integer So, result is 30 if double foo(double x, double y) result will be 30.4 If arguments are integer like (3,8), first function will work , 3+8 and the result will be 11 I am explaining in easier way,the another one who has deeper knowledge might explain you in deeper way.
9th Oct 2021, 4:59 PM
Myo Thuzar
Myo Thuzar - avatar
+ 5
you called a function where parameters have decimal places so it calls the second foo function to return those two doubles but in interger so decimal places got lost(some compliers will warn you about this) since you specify the type int.
9th Oct 2021, 5:05 PM
Rellot's screwdriver
Rellot's screwdriver - avatar
+ 3
In main you call the (second) foo function with the arguments 3.8 and 8.0. The function is a simple multiplication. So the result is 3.8 * 8.0 = 30.4. Since you specify the type as int that result is truncated to 30.
9th Oct 2021, 5:04 PM
Simon Sauter
Simon Sauter - avatar
+ 1
Thanks.
9th Oct 2021, 5:12 PM
Qius
Qius - avatar