Верен ли следующий код?
char mychar = 200;
printf("%x", mychar);
Согласноhttp://www.cplusplus.com/reference/clibrary/cstdio/printf/%x
ожидает целое число (4 байта с моим компилятором ), и здесь я передаю только 1 байт. Поскольку printf
использует varargs, я боюсь, что это работает только из-за выравнивания байтов в стеке (, т.е. char всегда использует 4 байта при помещении в стек ).
Думаю, лучше было бы написать:
char mychar = 200;
printf("%x", static_cast<int>(mychar));
Как вы думаете, первый код в любом случае безопасен? Если нет, как вы думаете, смогу ли я получить другой результат, если перейду на бигендиальную архитектуру?