定数化のタイミング

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
たまたま

定数化のタイミング

#1

投稿記事 by たまたま » 18年前

早速ですが、
例えば、
#define A 20
#define B 100
#define C B/A

さて
func(C);
の中のCはコンパイル後、実行前にすでに5になっているのでしょうか、
または5にはまだならず、実行時に100/20をはじめて計算されるのでしょうか。

しりうす~

Re:定数化のタイミング

#2

投稿記事 by しりうす~ » 18年前

「プリプロセス」ってキーワードで調べると幸せになれそうな予感がします。

keichan

Re:定数化のタイミング

#3

投稿記事 by keichan » 18年前

大抵のコンパイラは定数値同士の算術演算は計算しちゃうと思います。

TT414

Re:定数化のタイミング

#4

投稿記事 by TT414 » 18年前

コンパイラによって違います。

Cプリプロセッサがdefineを処理した後の、Cコンパイラの入力は「func(100/20);」ですが、
コンパイラの最適化の設定により、「実行時に100/20をはじめて計算」または、
「実行前にすでに5」のどちらかになります。

もっとも「実行時に100/20をはじめて計算」になるのは、
1古い
2コンパイラの最適化のレベルが低い
3教育用コンパイラで最適化を一切しない。(教育用はコンパイラの作り方の方です)

程度しか、無いと思いますが、無くはないので。

たまたま

Re:定数化のタイミング

#5

投稿記事 by たまたま » 18年前

TT414様
ご解説よくわかりました。
有難う御座います。

keichan様
有難う御座います。


しりうす~さま
>「プリプロセス」ってキーワードで調べると幸せになれそうな予感がします。
上の方々からのご指導もあって、そしてしりうす~さまのご返答自体からも
「プリプロセス」ってキーワードで調べなくても幸せになれるように予感がします。

たまたま

Re:定数化のタイミング(お礼)

#6

投稿記事 by たまたま » 18年前

解決のお礼

閉鎖

“C言語何でも質問掲示板” へ戻る