What should we use void main() or int main() ?

By | November 20, 2024

There is question that what should we use void main() or int main() ?

void main() { /* ... */ }

Or,

int main() { /* ... */ }

In both language C and C++, there is standard for it. You may refer the ISO C++ standard 3.6.1[2] or the ISO C standard 5.1.2.2.1

It is suggested to use,

int main() { /* ... */ }

In C, and

int main(int argc, char* argv[]) { /* ... */ }

There may be more versions of main() but they must all have return type int. The int returned by main() is a way for a program to return a value to “the system” that invokes it. On systems that doesn’t provide such a facility the return value is ignored, but that doesn’t make “void main()” legal C++ or legal C. Even if your compiler accepts “void main()” avoid it, or risk being considered ignorant by C and C++ programmers.

In C++, main() need not contain an explicit return statement. In that case, the value returned is 0, meaning successful execution. For example:

int main()
{
std::cout << "This program returns the integer value 0\n";
} 

Note also that neither ISO C++ nor C99 allows you to leave the type out of a declaration. That is, in contrast to C89 and ARM C++ ,”int” is not assumed where a type is missing in a declaration. Consequently:

main() { /* ... */ } 

is an error because the return type of main() is missing.

Refer – http://www.stroustrup.com/bs_faq2.html#void-main

Author: Mithlesh Upadhyay

Mithlesh Upadhyay is a Computer Science and AI expert from Madhya Pradesh with strong academic background (BE in CSE and M.Tech in AI) and over six years of experience in technical content development. He has contributed tech articles, led teams, and worked in Full Stack Development and Data Science. He founded the w3colleges.org portal for learning resources.