119 :
デフォルトの名無しさん:
char c[10] とか char c[128] とか。
なんでいつも適当な確保なのですか?
適当には二つの意味がある!
128が中途半端だと感じてるんだろ
>>119 貴方の質問から何を聞きたいのかを想像して答えますが、
例えば、cが入力用のバッファとして使われる場合、人が何文字入力するか、
なんていうことは予め判りませんよね。
だから、とりあえず入力される数としてあり得る範囲を確保し、
それ以上の要素を入力しても、配列に納める分以上は納めないようにする処理
を書いてあげないといけません。
例えば、フーリェ変換用のバッファとして使う場合などの特定用途では確保する
要素数は初めから判っているので、プログラム中で使われる配列の要素数が最小
になるように勤めるとより良いです。
123 :
デフォルトの名無しさん:04/11/02 23:06:16
いいえ、適当ではありません。
128には意味があります。
125 :
デフォルトの名無しさん:04/11/02 23:09:44
>>122 どうもありがとうございます。あまり確保しすぎてもいけないと
も聞いたのですですが、どのぐらいまでなら確保してもよいのですか?
>>123 例えば、フーリェ変換(計算機では普通FFT)だと2の倍数にしないとできません。
2の倍数というのはわりとよく出てきますよ。
友人に #define は問題があるから C では enum 使えと言われたのですが本当でしょうか…?
例えばこんな感じで
×#define 1 A
○enum { A = 1 };
わらた
- #define 1 A
+ #define A 1
お恥ずかしい…
>>118 やはり前置増分演算子の場合は問題ないんですね。
ありがとうございました。
>>127 defineはエラーがあってもコンパイル時にエラーとして検出できませんし、
フラグの値を設定したいときのような場合、値の数が極端に多いと、
ユニークな数を果して割り当てられたかどうかを確かめるのは困難です。
例えば、
#define PI 3.44
という定義があったとして、これを使ったコードにエラーがあったとき、
エラーメッセージにPIという文字は見ることができません。
3.44という良く解からない数字として表れるのです。
書いた人はたぶんπのつもりだったのでしょうが、あいにくπは3.14…です。
>>127 一般的にC++ではdefineはなるべく使うべきではありません。
幸運な事に、代わりに使える機能がいくつか用意されました。
Cでdefineとして書いていたものはtemplate、inline関数、const定数
として置き換え可能です。
enumはユニークな数を割り振りたいときや、const定数をクラス内部で初期値設定
できない時などに使うと良いでしょう。
定数を宣言するときは大抵const定数で良いでしょうね。