There is no 'printf'
&gt; <i>But what if you&#x27;re not using C99 or newer?</i><p>If you&#x27;re using C90, but under an implementation that supports C99, that implementation should obey all the new rules in all  areas where there is no conflict between C90 and C99.<p>The ISO C90 standard is obsolescent, so the fact that dropping off the end of <i>main</i> with no return value is an unspecified termination status is an obsolescent requirement (or non-requirement).<p>It is possible for a conforming C90 implementation to return 0 in that case. A conforming C99 implementation <i>must</i> do that as a conformance requirement. There is no good reason for a C99 implementation behaving in a C90 compatibility mode to simply drop non-conflicting C99 requirements and revert a behavior such as this.<p>This should be a don&#x27;t care issue, unless you&#x27;re targeting a <i>bona fide</i> nothing-but-C90 implementation.<p>However, if you are telling your implementation to be C90, what reason are you doing that for? If it&#x27;s not just some nerd gesture to show your contempt for C99, and you really care about portability to C90 implementations, then you probably want to be returning an explicit 0 from your main. Or even just to show contempt for C99, really, you should be returning that 0.