+ 4
Can Anyone explain why this happens?
I have been making a code for print a square with some functions I have made. Can anyone explain why 5 is printing after the product. https://code.sololearn.com/cU80To9kZjYG/?ref=app
3 Answers
+ 2
The function rf returns an integer. When you not return a value it produces undefined behaviour. Seems like the compiler used one sololearn returns either a 1 of nothing gets returned or the last variable used in a for loop, if the for loop has a range that is determined by an given integer argument.
As you can see this behaviour is really strange, and to add complexity to this: another compiler will most likely behave totally different.
You need to change rf to void and call the rf function before you cout << endl.
+ 4
@Alex and @Timon thanks for the help and I have figured it with both of answers provided by you two.
+ 3
//not sure, but now it works.
#include <iostream>
using namespace std;
void rf(int x){
for(int y=0;y<x;y++){
cout << "*";
}
}
void yy(int y){
for(int t=0;t<y;t++){
rf(y);
cout << endl;
}
}
int main() {
int a;
cin >> a;
yy(a);
return 0;
}