jameskuyper said:
As far as the standard is concerned, the result of an expression is
the value that it has
You are free to misunderstand me at leisure, but not to reinterpret in
the same way after a clarification.
[...]
It's not absence of information, it's an absence of constraints;
See above. You are shuffling around terms in order to confuse the
issue.
[...]
My point was that, to many people, what is allowed by that absence
seems magical.
Too many people cannot get their heads around the idea that
'undefined' implies 'nobody knows anything about it' and not 'program
will crash' and too many other people try to reinforce this notion by
wandering off into long strains of phantastic speculation.
For instance, they can't imagine any non-magical mechanism whereby
their program might abort before it even executes the first line of
main(), and as a result never actually executes the line of code
that gives the implementation permission to generate such an
executable.
Neither can I. But that I happen to have a compiler which translates
some 'terms' which (coincidentally) look like C, but which are not C
because their meaning is undefined into particular machine code whose
behaviour is completely well defined is as besides the point as
speculations (like above) regarding what 'mythical other compilers
could do' in such a case. This is either fiction or a collection of
facts about certain software.
I've already addressed that argument in the part you clipped;
You have expressed your conviction that 'addition in C' is certainly
(conceptually) identical to 'addition in mathematics', as defined on a
particular set (of the many sets it could be defined on), namely, the
set of integral numbers, and then argued based on that. That's as
(un)justified as being convinced that 'addition in C' is certainly
(conceptually) identical to 'addition in mathematics, as defined on
the 'mod 2^n' (two to the power of n)-ring' and arguing based on that.
I assume you understand were the second would lead to.