Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #7624

Re: what is the output

From Keith Thompson <kst-u@mib.org>
Newsgroups comp.lang.c
Subject Re: what is the output
Date 2011-07-04 18:07 -0700
Organization None to speak of
Message-ID <lnr5653576.fsf@nuthaus.mib.org> (permalink)
References <fde0c807-8924-4328-887b-42495fcc80c5@d26g2000prn.googlegroups.com> <iutat4$tg4$1@dont-email.me> <kfn39il371t.fsf@x-alumni2.alumni.caltech.edu>

Show all headers | View raw


Tim Rentsch <txr@alumni.caltech.edu> writes:
> Martin Ambuhl <mambuhl@earthlink.net> writes:
>
>> On 7/3/2011 12:32 PM, vinay kumar wrote:
>>> main()
>>> {
>>> int d=010;
>>> printf("%d",d);
>>> }
>>>
>>> please give with explanation
>>
>> Several diagnostics, since
>>   a) main incorrectly has no return type (should be int)
>
> Allowed in C90.
>
>>   b) printf has no prototype (#include <stdio.h>)
>
> C90 - no diagnostic required (and will probably work
> just fine).

Right.

But strictly speaking, the behavior is still undefined.
The compiler, upon seeing the call, assumes that printf has been
declared as

    int printf(char*, int);

or equivalent; the actual definition is variadic, which means (for
example) that the fimplementation is allowed to use an entirely
different calling sequence.

But in practice, it's going to work on most or all C90
implementations, because any implementation on which it didn't work
would have broken too much existing code.  Even C99 implementations
are likely to (have a mode in which they) let it by with a warning.

>>   c) for pre-C99 compilers, main fails to return a value.
>
> C90 - no diagnostic required, and behavior is defined
> (only termination status returned to host environment
> is undefined).

Right.  But note that, unlike the phrase "undefined behavior", the
standard doesn't say what an undefined termination status means, so we
have to fall back on the English meanings of the words.  The most likely
meaning is that the termination status can be as if main() returned any
arbitrary int value (and the implementation is not required to document
how this value is determined, or even to be consistent about it).

But one could imagine the "termination status" being something other
than an int value -- such as the canonical "suffusion of yellow".

(Since C99 has patched this loophole anyway, we're not going to
see a ruling on this.)

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

what is the output vinay kumar <vinay5b9@gmail.com> - 2011-07-03 09:32 -0700
  Re: what is the output "Joachim Schmitz" <nospam.jojo@schmitz-digital.de> - 2011-07-03 19:43 +0200
  Re: what is the output Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-07-03 13:47 -0400
    Re: what is the output Keith Thompson <kst-u@mib.org> - 2011-07-03 12:15 -0700
    Re: what is the output Chad <cdalten@gmail.com> - 2011-07-03 13:55 -0700
      Re: what is the output "osmium" <r124c4u102@comcast.net> - 2011-07-03 16:20 -0500
      Re: what is the output Keith Thompson <kst-u@mib.org> - 2011-07-03 14:24 -0700
        Re: what is the output Chad <cdalten@gmail.com> - 2011-07-03 16:13 -0700
          Re: what is the output "Morris Keesan" <mkeesan@post.harvard.edu> - 2011-07-03 21:10 -0400
          Re: what is the output Keith Thompson <kst-u@mib.org> - 2011-07-04 14:22 -0700
          Re: what is the output Todd Carnes <toddcarnes@gmail.com> - 2011-07-05 03:30 +0000
      Re: what is the output John Gordon <gordon@panix.com> - 2011-07-05 02:26 +0000
    Re: what is the output Tim Rentsch <txr@alumni.caltech.edu> - 2011-07-03 18:30 -0700
      Re: what is the output Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-07-03 21:58 -0400
        Re: what is the output Tim Rentsch <txr@alumni.caltech.edu> - 2011-07-04 17:10 -0700
          Re: what is the output Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-07-04 21:42 -0400
            Re: what is the output Shao Miller <sha0.miller@gmail.com> - 2011-07-04 22:51 -0400
            Re: what is the output Tim Rentsch <txr@alumni.caltech.edu> - 2011-07-06 16:23 -0700
    Re: what is the output Michael Press <rubrum@pacbell.net> - 2011-07-03 21:23 -0700
  Re: what is the output Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2011-07-03 14:06 -0600
  Re: what is the output Tim Rentsch <txr@alumni.caltech.edu> - 2011-07-03 18:19 -0700
    Re: what is the output Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-07-03 22:12 -0400
      Re: what is the output Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2011-07-03 21:16 -0600
    Re: what is the output Keith Thompson <kst-u@mib.org> - 2011-07-04 13:59 -0700
      Re: what is the output Tim Rentsch <txr@alumni.caltech.edu> - 2011-07-04 17:15 -0700
  Re: what is the output Martin Ambuhl <mambuhl@earthlink.net> - 2011-07-04 17:21 -0400
    Re: what is the output Tim Rentsch <txr@alumni.caltech.edu> - 2011-07-04 17:27 -0700
      Re: what is the output Keith Thompson <kst-u@mib.org> - 2011-07-04 18:07 -0700
        Re: what is the output Tim Rentsch <txr@alumni.caltech.edu> - 2011-07-06 17:08 -0700
    Re: what is the output "Morris Keesan" <mkeesan@post.harvard.edu> - 2011-07-04 22:19 -0400
      Re: what is the output Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-07-04 23:19 -0400
        Re: what is the output Keith Thompson <kst-u@mib.org> - 2011-07-05 08:34 -0700
  Re: what is the output Shao Miller <sha0.miller@gmail.com> - 2011-07-04 18:26 -0400
    Re: what is the output Todd Carnes <toddcarnes@gmail.com> - 2011-07-05 03:36 +0000

csiph-web