C言語関係掲示板

過去ログ

No.3. 文字定数の型


For文を使ってA〜Zまでを表示したい という時に

こちらのHPの例を参考に下記のように書いてみたのですが。

char ch;
for(ch='A';ch<='Z';ch++) {
    printf("%c",ch);
}

エラーが出て実行されません。変数chへの文字の代入で引っかかってるようなのですが、どうすれば良いのでしょう。
すいません。初心者です。


あー、ごめんなさい。
できました。
余分なスペースが入ってただけでした。

これからも、こちらのページ利用させていただきます。


どうも shu といいます。

エラーが出るということですが、見た感じでは問題なさそうですが、
文中の printf("%c", ch); の左側のインデント(字下げ)のところに、全角スペースが含まれています。" "で囲んだ場所以外で全角文字は使ってはいけません。インデントするときは、タブかスペースを使いましょう。

ちなみにプログラムを書くとき、なんのソフトをつかってますか?


おまけ

この場合は、char ch;より
int ch; のほうが良いような気がします。


char ch; について。

shu さんご指摘の通り、ループ変数として使う場合は「int」の方がいいかもしれません。

ただ、このサンプルは
for文のいろいろなパターン)「ループ変数が文字の例」から持ってきたのだと思います。
このホームページでは、文字は「char型」で扱うようにしています。
これは、文字列との比較を容易にするためです。

実際に、文字型がchar型かint型かは、処理系に依存する問題のようです。
 C FAQの「8章 文字と文字列 」、8.9:には、
「知らなくて驚くだろうけど、Cの文字定数はint型を持つ。だから sizeof('a')はsizeof(int)である。」
とありますが、LSIC試食版では1バイトでしたし、Turbo-C++ Version 4.0では2バイト、
BCBでは1バイトでした。

ということで、「char ch;」にしている点はご了承ください。

戻る


「初心者のためのポイント学習C言語」 Last modified:2001.7.25
Copyright(c) 2000-2002 TOMOJI All Rights Reserved