次のコードは正しいですか?
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));
とにかく最初のコードは安全だと思いますか? そうでない場合、bigendian アーキテクチャに切り替えると、別の出力が得られると思いますか?