下面的代码是否正确?
char mychar = 200;
printf("%x", mychar);
根据http://www.cplusplus.com/reference/clibrary/cstdio/printf/ %x
需要一个整数(我的编译器为 4 个字节),我只在这里传递 1 个字节。由于printf
使用了可变参数,我担心这仅适用于堆栈上的字节对齐(即,当压入堆栈时,char 总是使用 4 个字节)。
我认为最好写成:
char mychar = 200;
printf("%x", static_cast<int>(mychar));
你认为第一个代码是安全的吗?如果不是,你认为如果我切换到 bigendian 架构,我会得到不同的输出吗?