Summary: | ++ postfix operator increments too soon | ||
---|---|---|---|
Product: | gcc | Reporter: | Barry Mead <bmead15> |
Component: | c | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED DUPLICATE | ||
Severity: | normal | CC: | gcc-bugs |
Priority: | P2 | ||
Version: | 3.2.2 | ||
Target Milestone: | 3.4.0 | ||
Host: | I am sorry I don't know what goes in here | Target: | |
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: |
Description
Barry Mead
2003-05-23 02:26:05 UTC
Subject: Re: [Bug c/10947] New: ++ postfix operator increments too soon
This is a bug in your code, you are violating sequence point rules, you
cannot access something that you increment.
Use the option -Wsequence-point for a warning about them.
-Wsequence-point Warn about possible violations of sequence
point rules
you can do this instead:
{*s = toupper(*s); s++;}
Thanks,
Andrew Pinski
PS can someone close this bug.
> With the following line of code:
> *s++ = toupper(*s);
> The 3.2.2 gcc increments s before the value is determined on the right
> side of
> the equal sign. So what happens is *s gets the value of toupper(*s+1)
> not
> toupper(*s)
> The bug did not occur in version 3.1.1 of gcc. I have not run tests
> on versions
> in-between these versions. The gcc version 3.2.2 is the standard one
> that is
> included in the Mandrake Linux 9.1 distribution. If a known fix for
> this is
> possible by recompiling gcc 3.2.2 or upgrading to a newer gcc please
> let me know.
See Andrew comment. Not a bug. confirmed invalid Reopening to mark as a duplicate of... . |