変な質問してすみませんが、

教えてください。m(_ _)m
C言語について教えてください。
#define TRUE (1)と定義した場合ですが、TRUEの値って何バイトになるのですか?※シンボルで定義した値って何バイトになるのですか?コンパイラが勝手に
領域を確保してくれたりします?

環境は、VC++6.0を使用しています。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2007/09/12 12:16:52
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:KUROX No.2

回答回数3542ベストアンサー獲得回数140

ポイント57pt

>コンパイラが勝手に領域を確保してくれたりします?

たぶん、YES。

#C言語の TRUE/FALSE

http://blog.fideli.com/be-con/archive/46/0

id:masa193

ありがとうございます。

2007/09/12 12:15:08

その他の回答2件)

id:Mook No.1

回答回数1314ベストアンサー獲得回数393

ポイント41pt

C での define はソースレベルでの定義になりますので、

ソース上で数値の 1 を記述したのと同じ扱いになります。


なので厳密には型を含めて定義した方が良いと思いますが、

通常は int と同じサイズが確保されます。


http://www.atmarkit.co.jp/fdotnet/csharp_abc2/csabc2_019/cs2_019...

id:masa193

おお、確かにそうですね。実際に

型を含めた定義を心掛けます。

2007/09/12 12:15:06
id:KUROX No.2

回答回数3542ベストアンサー獲得回数140ここでベストアンサー

ポイント57pt

>コンパイラが勝手に領域を確保してくれたりします?

たぶん、YES。

#C言語の TRUE/FALSE

http://blog.fideli.com/be-con/archive/46/0

id:masa193

ありがとうございます。

2007/09/12 12:15:08
id:BlackSabbath No.3

回答回数53ベストアンサー獲得回数4

ポイント47pt

#define した内容はプリプロセッサによって

int i = TRUE ; → int i = (1) ;

if (TRUE) → if ((1))

のようにソースコードそのものを置き換えたのと同じことになります。

なので状況によりけりです。

id:masa193

そうですか。大変分かり易いです。

ありがとう御座いました。

2007/09/12 12:15:10
  • id:b-wind
    #define を解釈するのはプリプロセッサであり、狭義のコンパイラの処理前。
    だから単にソースコードにリテラルとして書いた場合と同じ扱いになる。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません