C/C++の宿題片付けます 140代目
■ このスレッドは過去ログ倉庫に格納されています
0231デフォルトの名無しさん
2010/09/20(月) 01:44:18最後から答ると、
>最後にget"char"なのにint返すって変ですよね。なんでint返すようにしてるんですか?
そういう定義なので本当のところは定かではないが
char の 256 通りの値とは別に EOF を表現する必要があるから char よりも大きなサイズが指定されていると推測される。
>intをcharに代入するようなことすると、コンパイラーがこれイクナイとエラー・警告
>出さないんですか?
必ずしも出すとは限らない。手元のコンパイラでは出さなかった。
>あと、>EOFはint型でないと表せない
>EOFってint型って決まってるんですか?(EOFの型や値は言語仕様で定義されてるんですか?)
ISO/IEC 9899 7.19.1 では EOF は整数型の負の数と定義されている。
後に記述するプロモーションという規則により、int 型の負の整数と考えてほぼ間違いないだろう。
>intのEOFとcharのc比較でもコンパイラーがこれイクナイとエラー・警告
>出さないんですか?
かならずしも出すとは限らない。
char 同士で演算を記述しても、すべての演算はプロモーションという暗黙の型変換により int に格上げになるのが仕様として含まれている。
ISO/IEC 9899 5.1.2.3.10
そういう型変換が行われることを前提として知っておかなければならない。
こんなところですかね。
■ このスレッドは過去ログ倉庫に格納されています