digitalmars.D - Re: Signed word lengths and indexes
- Kagamin <spam here.lot> Jun 16 2010
Jérôme M. Berger Wrote:#include <assert.h> #include <stdio.h> int main (int argc, char** argv) { char* data = argv[0]; /* Just to get a valid pointer */ unsigned int offset = 3; printf ("Original: %p\n", data); data += offset; printf ("+3 : %p\n", data); data += -offset; printf ("-3 : %p\n", data); assert (data == argv[0]); /* Works on 32-bit systems, fails on 64-bit */ return 0; }
http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=97545
Jun 16 2010
Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Kagamin wrote:J=C3=A9r=C3=B4me M. Berger Wrote: =20#include <assert.h> #include <stdio.h> int main (int argc, char** argv) { char* data =3D argv[0]; /* Just to get a valid pointer */=
unsigned int offset =3D 3; printf ("Original: %p\n", data); data +=3D offset; printf ("+3 : %p\n", data); data +=3D -offset; printf ("-3 : %p\n", data); assert (data =3D=3D argv[0]); /* Works on 32-bit systems, fails =
return 0; }
http://www.digitalmars.com/webnews/newsgroups.php?art_group=3Ddigitalma=
Yes, I know. I was pointing out to Walter a real life example of code that works on 32-bit systems but not on 64-bit systems because of signedness issues. That was in answer to Walter saying: "I thought most 64 bit C compilers were specifically designed to avoid this problem." Jerome --=20 mailto:jeberger free.fr http://jeberger.free.fr Jabber: jeberger jabber.fr
Jun 17 2010