[Mew-dist 14773] Re: bin.tar.gz
Atsushi Onoe
onoe at example.com
2000年 10月 26日 (木) 11:51:49 JST
> > つまり、int を引数に要求する関数に char を渡すのは処理系によって
> > 受け取る値が変わることになるので、warning 出すのは親切に思えます。
>
> intがcharの値をすべて表現できるのであれば、warning出すのは余計な
> お世話に思えます。
表現できるといっても、表現の仕方が処理系によって違うのですが。。
コンパイルする環境によって結果が変わるプログラムは、私は良いプログラム
だとは思いませんし、うっかりそういうコードを書いてしまった時は
warning が出れば反省して直します。
もっとも、
int i;
char c;
i = c;
でも同じ話が成り立ちますが、これでも warning は出るのかな?
> > 引数、戻り値に int より小さい(short, char など)を使う場合
> charのサイズがintより小さいことは、規格で決まっているのでしょうか。
int より大きくないことが決まってます。
規格を今参照してないので厳密ではないかも知れませんが、
sizeof(long) >= sizeof(int) >= sizeof(short) >= sizeof(char)
じゃなかったかな。あ、long long もできたか。これでは不便なので最近
int32_t, uint32_t
などの宣言が良く使われますね(u_int32_t は BSD 方言)。
なお、
long == signed long
int == signed int
short == signed short
ですが、char だけは例外で signed でも unsigned でも良いことになっています。
これが char に特に注意を払わないといけない理由です。
尾上
Mew-dist メーリングリストの案内