4年前お久しぶりになります、アメヒルネと申します。最近、友達からこんな質問を受けました。後にその友達からある1冊の本を渡され、そこに書いてあったのが「文字をcharで宣言するのはもう古い」との記述でした。私は結構古めのC言語入門本で勉強したこともあり、そのようなことは全く知らなかったのです。その記事の内容はよく覚えてないのですが、何故文字をintで宣言する必要があるのかがわかりません。個人的には見返す時に変数の型名で、この変数が何を扱っているのかを分かりやすくなるので、charはcharで宣言する方がいいような気がしています。単なる私の知的好奇心に応える意味で、どなたかご回答いただきたく思います。誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!※都合により、不定期でしか現れません。1文字を複数バイトで表わすことを考慮してのことかな?恐らくそうだと思います。マルチバイト文字ならwchar型を使えばいいと思いますが・・・。「今ではC言語で文字型変数をintで扱うって本当?」これに関しては,正しいです。9899:1990の時代からint型です。8.9にも簡単ではありますが記述があります。スポイラーを表示なお,C++においては1文字だけであればchar型になります。value.とあります。rare.とあり,C++ではオーバーロード時に単一の文字はchar型へのオーバーロードが選択された方が好ましいと思われること,さらにこれによる変化であるsizeo('A')がsizeof(int)でなくなることの影響も少ないことから,破壊的変更を許容したようです。後にその友達からある1冊の本を渡され、そこに書いてあったのが「文字をcharで宣言するのはもう古い」との記述でした。「古い」に関しては,根拠がわからないと判断つきかねますが,少なくとも「古い」とするのは通常の取り扱いではないです。修正ですが,互換性の都合上難しいでしょう。関数の戻り値としてcharではなくintを使うことはあり得ます。標準関数がそうですが,charとintの表せる範囲が異なる前提で,charの範囲外の値をintが返すことによりエラーを表すことができるためです。返信遅れてしまい、申し訳ありません。9899:1990の時代というのはよくわかりませんが、たぶん最近のことだろうと思っておきます。charをintで表すのは、簡潔にいえばエラー対策、ということだったんですね。回答ありがとうございました。誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!※都合により、不定期でしか現れません。4年前けっきょく「もう古い」の根拠は何ですかね。9899:1990の時代というのはよくわかりませんが、たぶん最近のことだろうと思っておきます。番号の最後に1990とありますから、1990年に公表された規格ということです。9899:1990というのは、C言語の国際規格として『初』のものですね。いうことはC言語で文字リテラルの型は「最初から」intでありfgetcの戻り値をcharで受けるようなことは「最初から」間違っていると考えるのが妥当ではないかと。それ以外で文字をintで扱うのが良い(新しい?)場面というのが思い当たりません。けっきょく「もう古い」の根拠は何ですかね。なんなんでしょうね(^^;成程、もともとはintだったんですね。それを、解説側が初心者にとって「わかりやすいように変形させた」ってことですかねぇ。誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!※都合により、不定期でしか現れません。著者が間違えている場合は論外なので、今は普通の著者を想定します。(1)このような理由から、(2)こういう場合には、(3)これはこうすべきである。いうような事が書いてあったのではないでしょうか。雑誌の記事の見出しなどが「これはこうすべきである」となっていることがよくあります。著者は自分の記事を読んでほしいので、見出しをセンセーショナルなものにすることがあります。一般的には「これはこうすべきでない」ということが常識とされているときに、あえて「これはこうすべきである」という見出しを付けることもよくあります。記事を読んだら「特殊な状況では一般的常識を無視すべきこともある」といった程度の内容だったりします。今は「これはこうすべきである」が正しいんだ』と、見出しを鵜呑みにするのは間違いです。なんなんでしょうね(^^;その本を読んだのはamehiruneさんでしょ。ミクプラは自由にリンクできます。