
constについて教えてください。以下のコード
//------------------------------------------------------
#include <stdio.h>
#include <math.h>
const double RANGE = 12.;
const int MESH = 10;
//const int N = (int)(12.0*10); // (1) OK
//const int N = (int)(12.0*MESH); // (2) OK
const int N = (int)(RANGE*10); // (3) NG
//const int N = (int)rint(12.0*10); // (4) NG
double Array[N];
//------------------------------------------------------
をg++ 4.0.1でcompileすると
error: array bound is not an integer constant
とでてきます。(1)(2)ではエラーは出ません。
(1)(2)が良くて、(3)がだめな理由がわかりません。
どなたか教えてください。
No.1ベストアンサー
- 回答日時:
配列を宣言するときの要素数は, 整数型の定数式が必要です.
この「整数型の定数式」に「リテラル」や「整数型の const 変数」は使えるんですが, 「実数型の const 変数」を使うことはできません. そういうものです.
ISO だと 5.19 Constant expression のあたりに, この制限が書かれています.
ありがとうございます。浮動小数点リテラルをcastして得られるconst
intはOKで、浮動小数点const変数をcastしてえられるconst intはNGというのが理解できないなかったのですが、「そういうもの」なのですね。
おそらく、cast計算と配列領域確保のtimingの問題でそういう仕様になっているのでしょうか。
教えていただいた規格を確認してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数から配列を返すには?
-
define で 配列
-
freadを使用した構造体に乱数を...
-
配列の要素数に変数を入れたい...
-
ファイルのデータを構造体に代...
-
a[i]とa[i+1]を入れ替えるよう...
-
char gyou[1024];でcharの表現...
-
C#で配列が空かを判定するには?
-
n人の教科ごとの最高点、最低点...
-
CStringからchar*への型変換に...
-
VBAのプログラムで、DIAG = 1# ...
-
System.IO.Directory.GetFiles...
-
C言語 配列の長さの上限
-
C言語のポインタに直接アドレス...
-
ハンドル、アドレス、ポインタ...
-
VB.NETでファイル名順にファイ...
-
配列を使わずに、変数名を動的...
-
init関数の意味
-
リッチテキストボックスの中身...
-
ExcelVBAでのkernel32(64bit)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数から配列を返すには?
-
C言語において、 配列要素をひ...
-
配列の要素数に変数を入れたい...
-
c言語
-
define で 配列
-
C#で構造体の配列を持った構造...
-
C#で配列が空かを判定するには?
-
コンボボックスでデフォルト値...
-
C言語 ファイルの指定された行...
-
C言語の2次元配列 容量が大き...
-
2番目の最大値を求める
-
MFCのCArrayを使った二次元配列
-
MFC - ダイアログボックスのPic...
-
構造体のextern方法
-
要素数・要素の値が未定の配列...
-
C言語についてです 5人のテスト...
-
配列のアドレス部
-
構造体を引数とする関数について
-
fclose()でセグメンテーション違反
-
C言語 数値の連続入力について
おすすめ情報