Spiros Bousbouras
3/19/2011 2:17:00 PM
On Fri, 18 Mar 2011 20:49:22 +0000
Ben Bacarisse <ben.usenet@bsb.me.uk> wrote:
> Spiros Bousbouras <spibou@gmail.com> writes:
>
> > int foo(void) {
> > char c = 0 , *p = &c ;
> > unsigned char *up = (unsigned char)p ;
> > signed char *sp = (signed char)up ;
> >
> > return p == (char)up && p == (char)sp &&
> > up == (unsigned char)sp &&
> > sp == (signed char)p ;
> > }
> >
> > Is foo() guaranteed to always return 1 ? Based on 6.2.5 p26 and 6.3.2.3
> > p7 I would say yes.
>
> Not without six *s being added in the right places!
Sorry , here's correct code :
int foo(void) {
char c = 0 , *p = &c ;
unsigned char *up = (unsigned char *)p ;
signed char *sp = (signed char *)up ;
return p == (char *)up && p == (char *)sp &&
up == (unsigned char *)sp &&
sp == (signed char *)p ;
}