Могу ли я передать символ, где в printf ожидается целое число?

Верен ли следующий код?

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

Как вы думаете, первый код в любом случае безопасен? Если нет, как вы думаете, смогу ли я получить другой результат, если перейду на бигендиальную архитектуру?

17
задан Jens Gustedt 11 July 2012 в 12:18
поделиться