Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | James Kuyper <jameskuyper@verizon.net> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: scanf() |
| Date | 2012-08-12 08:03 -0400 |
| Organization | A noiseless patient Spider |
| Message-ID | <k0862c$pmg$1@dont-email.me> (permalink) |
| References | (4 earlier) <13a134c9-5a13-4ad8-a59d-227aa68e94c3@googlegroups.com> <ln1ujduy1j.fsf@nuthaus.mib.org> <7337238e-c54d-496a-a29f-c96799218e81@googlegroups.com> <lnwr15t0i1.fsf@nuthaus.mib.org> <cfaea4d2-9a6b-483b-8439-e5e2106ea065@googlegroups.com> |
On 08/12/2012 07:07 AM, Malcolm McLean wrote: > בתאריך יום ראשון, 12 באוגוסט 2012 01:30:46 UTC+1, מאת Keith Thompson: >> Malcolm McLean <malcolm.mclean5@btinternet.com> writes: >> >>> בתאריך יום שבת, 11 באוגוסט 2012 18:40:56 UTC+1, מאת Keith Thompson >>>> Malcolm McLean <malcolm.mclean5@btinternet.com> writes: >> >>>> There are worse possibilities than wrong results. If the input includes >>>> something like "1.0e999999999", the behavior is undefined. >>>> >> >>> But what is the program meant to do with such an input value? UB is >>> probably the best thing that can happen to it. >> >> >> That's absurd. Undefined behavior means that whatever the *worst* >> thing is, it can happen, whether that's crashing the program, or >> continuing to execute quietly with bad data, or reformatting your >> hard drive. >> > It mean the implementation decides what the result of the operation will be. Keep in mind that the simplest way for the implementor to deal with that issue is to ignore it: the implementor may simply write the code be as fast as possible while meeting it's requirements, of which there are none that apply when the input is 1.0e9999999999. What happens when that code deals with such inputs need not be anything that the implementor bothered thinking about, it's just whatever happens when the assumptions that went into the design of the code are violated. Plausible possibilities (not having given any detailed thought to how the code is likely to be implemented), include silently corrupting the contents of memory locations that should not be affected by a call to sscanf() with valid inputs, or getting stuck in an infinite loop. > Of course the implementation is free to choose the worst option, like > reformatting the hard drive. But normally it's choice between terminating, > with an erro message, continuing with a corrupt value, or continuing with > a NaN or infinity. Not all platforms support option 3, which is the probable > best choice. I would favor terminating with an error message over either of the other two options you mention. I've heard people claim in similar discussion in the past that there exist programs where it's more important that a program keep running, regardless of how badly it is malfunctioning, than that it halt. They say that in certain safety critical contexts, if the program halts, someone will die. However, it seems to me that in precisely those same circumstances, if the program malfunctions badly enough, someone will die anyway, even if it never halts. -- James Kuyper
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
scanf() Edward Rutherford <edward.p.rutherford79@REMOVETHIS.gmail.com> - 2012-08-06 20:58 +0000
Re: scanf() Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-08-06 17:29 -0400
Re: scanf() Keith Thompson <kst-u@mib.org> - 2012-08-06 14:40 -0700
Re: scanf() James Kuyper <jameskuyper@verizon.net> - 2012-08-06 17:39 -0400
Re: scanf() Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-08-06 22:49 +0100
Re: scanf() Edward Rutherford <edward.p.rutherford79@REMOVETHIS.gmail.com> - 2012-08-07 18:37 +0000
Re: scanf() James Kuyper <jameskuyper@verizon.net> - 2012-08-07 15:01 -0400
Re: scanf() Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-08-07 15:03 -0400
Re: scanf() Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-08-07 20:51 +0100
Re: scanf() John Bode <jfbode1029@gmail.com> - 2012-08-09 14:00 -0700
Re: scanf() Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-08-11 03:08 -0700
Re: scanf() Keith Thompson <kst-u@mib.org> - 2012-08-11 10:40 -0700
Re: scanf() Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-08-11 13:34 -0700
Re: scanf() "BartC" <bc@freeuk.com> - 2012-08-11 23:04 +0100
Re: scanf() James Kuyper <jameskuyper@verizon.net> - 2012-08-11 19:20 -0400
Re: scanf() Keith Thompson <kst-u@mib.org> - 2012-08-11 17:30 -0700
Re: scanf() Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-08-11 20:41 -0400
Re: scanf() Keith Thompson <kst-u@mib.org> - 2012-08-11 18:13 -0700
Re: scanf() Keith Thompson <kst-u@mib.org> - 2012-08-11 18:16 -0700
Re: scanf() Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-08-11 21:32 -0400
Re: scanf() Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-08-12 04:07 -0700
Re: scanf() James Kuyper <jameskuyper@verizon.net> - 2012-08-12 08:03 -0400
Re: scanf() Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-08-12 06:41 -0700
Re: scanf() Keith Thompson <kst-u@mib.org> - 2012-08-12 13:39 -0700
Re: scanf() Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-08-12 14:20 -0700
Re: scanf() Keith Thompson <kst-u@mib.org> - 2012-08-12 16:33 -0700
Re: scanf() "Heinrich Wolf" <invalid@invalid.invalid> - 2012-08-13 12:22 +0200
Re: scanf() Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2012-09-05 00:13 +0300
Re: scanf() Tim Rentsch <txr@alumni.caltech.edu> - 2012-09-07 14:18 -0700
Re: scanf() Keith Thompson <kst-u@mib.org> - 2012-09-07 15:02 -0700
Re: scanf() Tim Rentsch <txr@alumni.caltech.edu> - 2012-09-07 17:25 -0700
Re: scanf() Keith Thompson <kst-u@mib.org> - 2012-09-07 18:35 -0700
Re: scanf() Seungbeom Kim <musiphil@bawi.org> - 2012-08-12 21:05 -0700
Re: scanf() Robert Wessel <robertwessel2@yahoo.com> - 2012-08-11 17:37 -0500
csiph-web