Re: in standard C it is impossible to write a correct program. Why?



richard@xxxxxxxxxxxxxxx (Richard Tobin) writes:
In article <pan.2009.09.02.18.09.51.0@xxxxxxxxxxx>,
Nobody <nobody@xxxxxxxxxxx> wrote:
Does the lcc-win documentation provide sufficient information to determine
the last arithmetic operation performed when evaluating a particular
expression?

I would have thought it was far less ambiguous to provide a built-in
"function" (probably a macro):

check_overflow(expression)

which returns true if overflow occurs during the evaluation of the
expression. This doesn't require any odea of "last operation', makes
no assumption about overflow being indicated by a flag, and allows the
compiler to generate different (perhaps slower) code in cases where
overflow needs to be checked for.

For example:

if(check_overflow(c = a+b))
fprintf(stderr, "sorry, overflow in addition\n");

I'm trying to decide whether I like that better than my own
suggestion, which required specifying a bool lvalue into which to
store an indicator of whether the expression overflowed.

What we really want, I think, is something that yields two results,
the result of evaluating the expression and whether it overflowed.
With your proposal, the result of the expression is discarded, which
means it will almost always need to be an assignment.

Both have the advantage of keeping the information "local" in some
sense, rather than either querying some flag that's not obviously
associated with the expression or invoking a specified function.

--
Keith Thompson (The_Other_Keith) kst-u@xxxxxxx <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"
.



Relevant Pages

  • Re: in standard C it is impossible to write a correct program. Why?
    ... Nobody wrote: ... the last arithmetic operation performed when evaluating a particular ... no assumption about overflow being indicated by a flag, ...
    (comp.lang.c)
  • Re: in standard C it is impossible to write a correct program. Why?
    ... Nobody wrote: ... the last arithmetic operation performed when evaluating a particular ... no assumption about overflow being indicated by a flag, ...
    (comp.lang.c)
  • Re: Pointers gone mad!
    ... INCBY) so that there's no overflow while evaluating the condition ... a carry - again, recall your elementary school days), and if that too ...
    (microsoft.public.vc.language)
  • help!
    ... " An unhandled exception of type 'System.ArithmeticException'occurred in ... Overflow or underflow in the arithmetic operation." ...
    (microsoft.public.dotnet.languages.csharp)
  • help!
    ... " An unhandled exception of type 'System.ArithmeticException'occurred in ... Overflow or underflow in the arithmetic operation." ...
    (microsoft.public.dotnet.languages.csharp)