[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 メーリングリストの案内