[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.c

Conversions between character pointers

Spiros Bousbouras

3/18/2011 8:40:00 PM

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.
2 Answers

Ben Bacarisse

3/18/2011 8:49:00 PM

0

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!

--
Ben.

Spiros Bousbouras

3/19/2011 2:17:00 PM

0

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 ;
}