+ 1

Shouldn't "int main()" return an integer ?

I guess my question is very basic but I will really appreciate any help: In the section "Creating a class" we see the code int main() { BankAccount test; test.sayHi(); } Which works. But I don't understand why this function, which is not void and is supposed to return an integer, has not the part of "return 0;" and in fact returns a string ("Hi") with no error. Shouldn't there be an error as the output is not an integer? Many thanks

2nd Dec 2016, 10:22 PM
Ferran
Ferran - avatar
5 Answers
+ 6
Your code will run for some weird reason, it should return an integer to know when the program ends, or stops. My guess is that in that case, without the return 0; program runs, but without ending, until you click away or close.
2nd Dec 2016, 11:16 PM
Filip
Filip - avatar
+ 2
The main function is an exception to the rule. You are right, it should return an integer, but the C++ standard says that if the main function doesn't return anything, this is the same as returning 0.
2nd Dec 2016, 11:57 PM
Schindlabua
Schindlabua - avatar
+ 1
Thanks all for your help and specially to ~Designing for the detailed answer!
5th Dec 2016, 4:45 PM
Ferran
Ferran - avatar
0
if we define int main() instead of void main() then we have to return 0 at the end of the program. But it not in the case of void main()
5th Dec 2016, 6:26 AM
Naveen Kumar
Naveen Kumar - avatar
- 1
It depends on the environment. Some newer IDEs will add the return statement for you in main, older will give you an error
2nd Dec 2016, 11:34 PM
Elio
Elio - avatar