- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[C++]const int と配列)
[C++]const int と配列についての疑問
このQ&Aのポイント
- constについて教えてください。コードをg++ 4.0.1でcompileすると、array bound is not an integer constantというエラーが出ます。
- (1)(2)ではエラーが出ず、良い結果が得られますが、(3)の場合だけエラーが出る理由がわかりません。
- どなたか教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
配列を宣言するときの要素数は, 整数型の定数式が必要です. この「整数型の定数式」に「リテラル」や「整数型の const 変数」は使えるんですが, 「実数型の const 変数」を使うことはできません. そういうものです. ISO だと 5.19 Constant expression のあたりに, この制限が書かれています.
その他の回答 (1)
- aris-wiz
- ベストアンサー率38% (96/252)
回答No.2
No1さんが既に仰っていますが、 「error: array bound is not an integer constant」の通り 配列の添え字が整数の定数では無い為エラーだといっています。 単純に考えて、実数で配列の添え字が扱えるかという問題ですね。
質問者
お礼
ありがとうございます。 「実数で配列の添え字が扱えるかという問題ですね。」 というより実数を整数にcastして得られる静的整数変数がなぜ配列確保に使えないのかという疑問でした。
お礼
ありがとうございます。浮動小数点リテラルをcastして得られるconst intはOKで、浮動小数点const変数をcastしてえられるconst intはNGというのが理解できないなかったのですが、「そういうもの」なのですね。 おそらく、cast計算と配列領域確保のtimingの問題でそういう仕様になっているのでしょうか。 教えていただいた規格を確認してみます。