S
Seebs
Also "Argonaut," it seems. <PLONK>
No, he tried the experiment, concluded that the results were negative,
and stopped. Within the last day or so.
-s
Also "Argonaut," it seems. <PLONK>
If the Mohawk fits, and it does, wear it.
(Wrong year, by the way.)
Your endless gushing of absurd insults is not "hard to parse" as you
spinoza1111wrote:
Did you cut and paste this from somewhere?
In contrast to the above, this sure seems like an unprovoked personal
attack with absolutely no attempt to solve any problem; particularly
any on topic C problem.
How would you describe your behavior?
This particular rant is an unprovoked attack which uses non-free
bandwidth. Why not go green and give us a break for the new year?
So in 2000 you submitted a rebuttal; now years down the road it's
simply venomous, irrational screetching.
We really do get it, you don't really need to say it every 15 minutes.
Actually he neither disrupted nor hijacked this thread; that was you.
I suppose if you think the best defense is a good offense your
behavior could constitute some kind of attempted defense. If you want
to appear at least slightly rational, try quoting the attack you feel
threatened you. Your fear is really hard to understand, and your
response seems unproportional in any event.
Just a thought; why not write a C program that generates hateful
responses and accuses people. Then you could simply post the program
instead of endless rants and at least you would have mentioned
something relevant to this newsgroup. You could then polish it over
time and demonstrate you self-proclaimed considerable skill and we
could learn something about C programming.
Keith Thompson said:I am, thank you.
I still think that the real Edward Nilges will be pissed when he sees the
damage being done to his reputation and credibility by spinoza1111.
I still think that the real Edward Nilges will be pissed when he sees the
damage being done to his reputation and credibility by spinoza1111.
I still think that the real Edward Nilges will be pissed when he sees the
damage being done to his reputation and credibility byspinoza1111.
Dennis
Dennis \(Icarus\) said:Keith Thompson said:[...]
And as Keith Thompson may be happy to hear, I'm thus signing off from
any further attempt to stem your toxic flow.
I am, thank you.I still think that the real Edward Nilges will be pissed when he sees the
damage being done to his reputation and credibility byspinoza1111.
And I'm sure you believe in the Tooth Fairy and the Easter Bunny as well.
Huh.
That'd be a treat; what if it were the ACTUAL Edward Nilges trying to
contact me variously out of band, and I've been mistakenly ignoring him,
thinking he wasspinoza1111?
Johannes Schaub (litb) said:Hello there! I'm the evil guy that stated it is UB in C. After reading
analysis of all you, i agree that this is not undefined behavior in C1x
(great work @ Beej Jorgensen !)
But i still think it is UB in C99. The additional requirements about value
computations are missing from C99 and so the "Between the previous and next
sequence point an object shall have its stored value modified at most once
by the evaluation of an expression." seems to render behavior UB.
pete said:It does.
That's wrong.
The side effect from the increment operator.
The sequence points from the comma operator are not relevant
because there is no sequence point between the evaluation
of the right and left operands of the assignment operator.
If the right operand of the assignment opeartor is evaluated first,
then there shouldn't be any problem with
i = i++;
but there is a problem.
Assignment is not a sequence point.
James Dow Allen said:I'm not sure. In the simple case:
i = (1, i++, i) + 1;
It may be hard to imagine how the C system
could go wrong, but one might be able to imagine
some cache-speeding trick that assumes it
won't encounter this code (or can do what it wants
with it, if marked UB in The Standard).
For those who think commas are permitted, what about:
*(p += i, ++i, p += i) = j++, ++j, j;
No problem right?
The commas at left separate left-side sequence points,
and commas at right separate (order) a different
set of sequence points. We end up, in effect with
i += 1, *(p += i+i-1) = j += 2;
What do we know about *which* sequence points are
reached first, right-side vs left-side, or can they
be interelaved?
Now what about:
*(p += i, ++i, p += i) = i++, ++i, i;
Definitely UB-lookingish.
Eric Sosman said:The value of the parenthesized sub-expression is the
value of `i' after incrementation, yes. But where is it
written that the sub-expression's value must be determined
by actually reading it from `i'? If an optimizing compiler
knew that `i' was 42 before the line in question, could it
not replace the assignment with `i=44', with the `i++'
happening at some undetermined moment?
Johannes Schaub (litb) said:In C99, it's totally irrelevant that there is a sequence point after "i++",
because the evaluation of the assignment expression ("i = (i, i++, i)") is
not after that sequence point, but it's *around* that sequence point: The
sequence point after "i++" is a part of the assignment expression (namely,
it appears in evaluation of its right side here).
As such, the Standard does not enforce that the assignment side effects does
not appear between the same pair of sequence points (and it doesn't even
agree the side effect is complete before any of the sequence points within
any of its operands). It only has to be complete at the full expression
sequence point. So, since we now have the value of the scalar changed
between the previous and the next sequence point more than one time
potentially (depending on how the implementation schedules the side
effects), we are running into UB.
pete said:I'm not evaluating the lone (i) which follows,
because I'm not evaluating the expression which contains it.
The meaning of the phrase "evaluate an expression" is at issue here.
If an expression has side effects,
then merely calculating its value,
is not an evaluation of the expression.
If you had to evaluate the right operand of every assignment operator
before making the assignment,
then assignment would be a sequence point, but it isn't.
Want to reply to this thread or ask your own question?
You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.