質問です

char a[1] = {0xff};
char *b;
unsigned char c, d;

b = a;
c = *(unsigned char *)b;
d = (unsigned char)*b;

cとdはどちらも0xffになることが保証されているんでしょうか?