Правильно ли указан следующий код?
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));
Как вы думаете, первый код в любом случае безопасен? Если нет, вы думаете, что я могу получить другой результат, если я перейду на архитектуру с бигеном?