C++11 を使用して次のスニペットをコンパイルします (デモはこちら):
#include <stdint.h>
int main() {
const uint8_t foo[] = {
'\xf2'
};
}
'\xf2'
への変換時に縮小変換があることを示す警告が表示されます (少なくとも GCC 4.7 では) uint8_t
。
どうしてこれなの?sizeof(char)
は常に1
であり、これは と同じsizeof(uint8_t)
はずですよね?
などの他の char リテラルを使用する場合'\x02'
、警告は表示されないことに注意してください。