Вот пример:
#include <stdio.h>
int main () {
char charC5 = '\xC5';
char char67 = '\x67';
char charDD = '\xDD';
char char5A = '\x5A';
printf("(unsigned long long) charC5 = %llx\n", (unsigned long long) charC5);
printf("(unsigned long long) char67 = %llx\n", (unsigned long long) char67);
printf("(unsigned long long) charDD = %llx\n", (unsigned long long) charDD);
printf("(unsigned long long) char5A = %llx\n", (unsigned long long) char5A);
return 0;
}
Вот результат его выполнения:
(unsigned long long) charC5 = ffffffffffffffc5
(unsigned long long) char67 = 67
(unsigned long long) charDD = ffffffffffffffdd
(unsigned long long) char5A = 5a
Почему если char-значение начинается не с hex-цифры, на выходе приведения типов ffffffffffffffxx-значение?