public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "vanveghel at home dot nl" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug c/17253] New: Inconsistency in reading array indexes Date: Tue, 31 Aug 2004 19:50:00 -0000 [thread overview] Message-ID: <20040831195044.17253.vanveghel@home.nl> (raw) Consider the following two snippets: -- snip snip -- #include <stdio.h> #include <string.h> int main (void) { char test[5][5]; int j = 3; memset (&test, ' ', 5 * 5); test[j][j++] = '!'; printf ("test[3][3] = %c\ntest[4][3] = %c\n", test[3][3], test[4][3]); return 0; } -- snip snip -- And: -- snip snip -- #include <stdio.h> #include <string.h> int main (void) { char test[5][5]; int j = 3; memset (&test, ' ', 5 * 5); test[(j == 4) ? 4 : 3][j++] = '!'; printf ("test[3][3] = %c\ntest[4][3] = %c\n", test[3][3], test[4][3]); return 0; } -- snip snip -- Running both these snippets produces the following results with GCC 3.3.4 running on Debian GNU/Linux Unstable (x86): $ ./test test[3][3] = test[4][3] = ! $ ./test2 test[3][3] = ! test[4][3] = $ It seems that j++ is evaluated first only in the second case, making the statement in the first bracket evaluate to 4. This may be a result of 'undefined behavior' caused by sequence points, and indeed, GCC does issue a warning ("warning: operation on `j' may be undefined"), but it does seem like something that can at least be improved. Kind Regards, Jasper -- Summary: Inconsistency in reading array indexes Product: gcc Version: 3.3.4 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: vanveghel at home dot nl CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: 3.3.4 GCC host triplet: 3.3.4 GCC target triplet: 3.3.4 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17253
next reply other threads:[~2004-08-31 19:50 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2004-08-31 19:50 vanveghel at home dot nl [this message] 2004-08-31 20:03 ` [Bug c/17253] " falk at debian dot org 2004-08-31 20:44 ` pinskia at gcc dot gnu dot org 2004-08-31 20:46 ` bangerth at dealii dot org 2004-08-31 20:46 ` bangerth at dealii dot org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20040831195044.17253.vanveghel@home.nl \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).