質問: c言語の文字リテラル中の16進文字定数について c言語の以下のプログラムをコンパイルすると、0x6123は大きすぎる旨のコンパイルエラーとなります。 char str[]="abc\x6123"; char str[]="abc\14123"; は¥141の141を8進数とみなし、上手くいきます。 なぜ、最初のケースは\x61の61を16進数としてくれないのですか 16進数も3桁で記述する旨のサイトもあったので、 char str[]="abc\x06123"; としてみましたが、同じ結果になります。 使用しているのは、visualstudio2017です。
回答: 必要な人は少数だと思うけど #1 のところにあった「確認」のはなし. ワイド文字 (ワイド文字列) であっても 8進エスケープシーケンスでは最大 3桁しかとらない という条件は変わらないため, 結局最大 9ビットしか与えられないことになります. つまり 10ビット以上が必要なときには 16進エスケープシーケンスで書かないといけません.