public inbox for gcc-help@gcc.gnu.org
 help / color / mirror / Atom feed
From: "Rohit Arul Raj" <rohitarulraj@gmail.com>
To: gcc-help <gcc-help@gcc.gnu.org>
Subject: odd behavior with Character Arrays
Date: Fri, 08 Aug 2008 06:55:00 -0000	[thread overview]
Message-ID: <c356fd4e0808072312u66716d8bp696b9e95f4ff3ba1@mail.gmail.com> (raw)

Hi All,

Compiler Version: gcc 4.1.2 and gcc 3.4.6

Test Case:

unsigned int g = 0;
unsigned int slen(const char* c)
{
        int l = 0;
        while(*c != '\0') {
                ++l;
                ++c;
        }
        return l;
}

int main()
{
        unsigned int t;
        unsigned char n[] = {'a', 'b', 'c', 'd'};
        t = slen(n);
        g = slen(n);

        printf("\n t = %d, g1 = %d\n", t, g1);
        return 0;
}

I have a test case given above which is used to compute the string
length of the character array. In the test case, both 't' and 'g' call
the same function to compute the string length. But both these values
are different and they are wrong also.

With GCC 4.1.2,  t = 7, g = 5
With GCC 3.4.6,  t = 15, g = 5

This happens only when i don't provide the size of the array 'n'. If
size of the array is given "unsigned char n[15] = {'a', 'b', 'c',
'd'};" then the values are proper
t = 4 and g = 4.

1. Is this the expected behavior with GCC?
2. Can i get more details as to why if the size of the array is not
provided the compiler does not insert an string terminator at the end
of the array.
    This happens with both character as well as integer arrays.

Regards,
Rohit

             reply	other threads:[~2008-08-08  6:13 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-08  6:55 Rohit Arul Raj [this message]
2008-08-08  7:07 ` Mateusz Loskot
2008-08-08  9:38   ` Rohit Arul Raj
2008-08-08 12:10     ` Jędrzej Dudkiewicz
2008-08-08 13:00     ` Mateusz Loskot
2008-08-08 13:40       ` Mateusz Loskot
2008-08-08 15:01     ` John Fine
2008-08-09  1:09       ` Is this code wrong? John Fine
2008-08-09  2:44         ` Eljay Love-Jensen
2008-08-09 11:23           ` corey taylor
2008-08-09 14:57             ` John Fine
2008-08-08 15:38     ` odd behavior with Character Arrays Bob Plantz

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=c356fd4e0808072312u66716d8bp696b9e95f4ff3ba1@mail.gmail.com \
    --to=rohitarulraj@gmail.com \
    --cc=gcc-help@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: link
Be 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).