スピーカーは、私は他のどのC++
チュートリアルでこれを見たことがないC++の配列の宣言と初期化
int deca['f' + '9' + 2 ] = {0};
を使用して、彼らはそれが何を意味するのか説明していない、と私はしようとしたとき、それを私のコンピュータに実装すると、エラーが表示されました。
参考として、それらはLinux環境にありました。
スピーカーは、私は他のどのC++
チュートリアルでこれを見たことがないC++の配列の宣言と初期化
int deca['f' + '9' + 2 ] = {0};
を使用して、彼らはそれが何を意味するのか説明していない、と私はしようとしたとき、それを私のコンピュータに実装すると、エラーが表示されました。
参考として、それらはLinux環境にありました。
単純に整数配列N
を宣言し、ゼロに初期化します。 N
が評価するものは、'f' + '9' + 2
の式によって決まります。 ASCIIコードページを使用している場合は別のコードページを使用している場合は161
と評価されます。すべての文字リテラルは、使用されるエンコードに応じて対応する整数値を持ちます。 ASCIIコードページでは、文字'f'
は102
の数で表され、文字'9'
は57
の値を持ちます。式は102 + 57 + 2
となり、これは161
に等しくなります。他のコードページでは、これらの文字は他の値を持つことがあります。同等の:
int deca[161] = { 0 }; // If ASCII code page is used
あなたのシステムがASCIIを使用している場合にのみ当てはまりますが、これは保証されていません(関連する問題を参照)(https://stackoverflow.com/questions/29381067/does-c-and-c-guarantee-the-ascii-of-af- and-af-characters) – Borgleader
@Borgleader確かに。答えを更新しました。 – Ron
あなたは_code_pcode_ではなく_encoding_を意味すると思います。これらの2つの言葉は異なることを意味します。たとえば、マシンは、_encoding_を持つ_コードページ_をサポートする必要はありません。 –
表示されたエラーは何ですか? – DeiDei
あなたはチュートリアルのリファレンスを共有できますか? –
どのようなエラーがありましたか? [ここでうまくいく](http://coliru.stacked-crooked.com/a/9e0ce8ccd400fc76) – NathanOliver