Programming Place Plus トップページ – C言語編 – 第10章
問題① 次の中から、定数式でないものをすべて選んでください。num は
int型の変数、f は戻り値が int型の関数、c は const修飾された
int型の変数、X は #define X 10
と定義された記号定数とします。
定数式であるためには少なくとも、プログラムを実行しなくても、結果が分かる式でなければなりません。変数や関数呼び出しが含まれていると、その変数の値が何であるか、関数がどんな値を返すのかが分からなければ、式の結果を決めることができません。ソースコードを読めばわかると思うかもしれませんが、それは実質はプログラムを(脳内で)実行しているわけであって、実行せずに分かるとはいえません。
そのため、5 + num
、f() * 2
、c +
1
は定数式ではありません。const修飾された変数は定数として使いたいところですが、これはC言語のルールとして定数ではないことになっています。
X はオブジェクト形式マクロであり、10
という整数定数に名前を付けているだけなので、これは定数です。
Programming Place Plus のトップページへ