+ 1

šŸ”“ Can anyone explain me this? How come this output? (C++) [CODE IN DESCRIPTION]

Please explain! šŸ‘‡šŸ» https://code.sololearn.com/cuxYuVdPgTdO/?ref=app

28th Jan 2021, 6:50 AM
Mahima Rajvir Singh
Mahima Rajvir Singh - avatar
9 Answers
+ 4
In the scope of method add, you introduce New variables a and b, which are not the same as class attributes a and b. So you are not working with class attributes a and b in this method. You could now use another Name for the parameters, like p and q as Syrah Algena wrote. But this is also a very nice example for the use of this-Operator. Changing the Code to void add(int a, float b) { this->a = this->a + a; this->b = this->b + b; } would also work, while the parameters still called a and b. this->a referres to the class member a, a referres to Parameter a
28th Jan 2021, 7:49 AM
G B
G B - avatar
+ 4
Mahima Singh 8 and 8.0 have no difference here because when u adding two float number like #include <iostream> using namespace std; int main(){ float a= 4.5; float c=a+ a; cout<<c; } U will get 9 not 9.0 so u dint have any issue u can say this is bug but 0.0 and 0 not have any sense its equal hope this example will clear your doubts.
28th Jan 2021, 10:46 AM
A S Raghuvanshi
A S Raghuvanshi - avatar
+ 4
As Syrah Algena said you won't get zero after decimal but if you need it ,here is how to do it . #include <iostream> #include <iomanip> using namespace std; int main() { float a=4.0; cout<<setprecision(1)<<fixed<<a; return 0; } setprecision will define the amount of numbers to print after decimal.
28th Jan 2021, 10:51 AM
Abhay
Abhay - avatar
+ 4
Syrah Algena , Abhay , Abol and G B Thank you so much each and everyone for clearing my doubts. It was really very helpful! ā˜ŗļøā˜ŗļø Happy coding all of you!!
28th Jan 2021, 10:56 AM
Mahima Rajvir Singh
Mahima Rajvir Singh - avatar
+ 2
You have defined same variable when u passing values see this function void add(int a, float b) { a = a + a; b = b + b; } Here write p and q u will understood why u getting these values
28th Jan 2021, 7:43 AM
A S Raghuvanshi
A S Raghuvanshi - avatar
+ 2
Syrah Algena ,G B and Abol #include <iostream> using namespace std; class cmplx { int a; float b; public: cmplx(int x, float y) { this -> a = x; this -> b = y; } void add(int a, float b) { this -> a = a + a; this -> b = b + b; } void display() { cout << "a: " << a; cout << "\nb: " << b; } }; int main() { cmplx c(5, 2.4); c.add(2, 4.0); c.display(); return 0; } Why this is printing a: 4 b: 8 //why not 8.0??? Why it isn't printing 8.0 in b??
28th Jan 2021, 10:30 AM
Mahima Rajvir Singh
Mahima Rajvir Singh - avatar
+ 1
G B yes in the given example Compiler getting confused in local and global variables becoz variable names are same a in parameters which she passing and previous defined variable in class .in this case she need to use this keyword
28th Jan 2021, 7:52 AM
A S Raghuvanshi
A S Raghuvanshi - avatar