![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.3ベストアンサー
- 回答日時:
回答はすでに出ていますが、補足ということで。
。。要するに、C には「文字」を表す型がないということなんです。
char型は、1バイト長の整数型だと思ってください。
いわゆる半角文字をあらわすのに、アスキーコードでは 0x00~0x7F であらわすことができますので、C ではそれをあらわすのに十分な 1バイトを char型として採用したということです。
しかも、char型の変数にはアスキーコードが数値としてダイレクトに入るので、以下のような処理も可能になっちゃうと。。。
-------------------------------------------------
char hoge;
hoge = 'a';
hoge += 10; // hoge は 'k' になる。
-------------------------------------------------
また、以下の処理はすべて同じことのなります。
-------------------------------------------------
char piyo;
piyo = 'a';
piyo = 0x61;
piyo = 0x97;
-------------------------------------------------
…あと、注意が必要なのは、こんな言語は珍しいということですね。
# C って、いろんな意味で手抜きな言語ですからね。
ふつうの言語は「文字型」の変数には「文字」しか代入できません。
ついでに、C で 1文字の「文字」用に変数を用意する場合、int型にしたほうがいろんな意味で良いと思います。
C の標準関数も、1文字を扱う関数は int型を引数にとったり戻り値にしていますよね。
# そもそも、int型より小さいサイズは、実行時にはすべて int型のサイズに変換されてしまいますし。
# このあたりの話は、「汎整数拡張」でご自分で調べてみてください。 (←あ、逃げた。。。)
じゃあ、「char型の存在意義は?」という話になりますが、文字列 (char型配列) 用に用意されていると思ってもらって良いのではないかな。
「補足」といいながら長くなってしまいましたが、まとめると以下のような感じかな。
◆「文字」は int型であらわす (もちろん char型であらわすことも可能)。
◆「文字列」は char型の配列であらわす。
ご参考まで。
やはり、コンピュータはint型が一番処理しやすいんでしょうね。
これから、アスキーコードの課題をやるのでいい勉強になりました。
文字は数字で変えられるんですね驚きました。
どうも細かいところまでありがとうございました。
No.2
- 回答日時:
ご存じかとは思いますが、コンピュータは全て数値で動いてます。
文字に見えるものも全て数値なのです。
fprint()関数なども、数値を文字列として表現するだけで、
内部では数値として扱っているわけです。
char 型の変数といっても中身はタダの整数値ですしね。
char 型でループのカウンタを作って動かしてみると分かります。
>ご存じかとは思いますが、コンピュータは全て数値で動いてます。
>文字に見えるものも全て数値なのです。
ですね。
処理を行うまでのコンピュータに渡される値は1,0までに
なるんですよね。
あんまり型に惑わされないようにします。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ポインタを使って回文かどうか...
-
ASCIIコードへの変換方法
-
char型にint型の数値を代入する。
-
fread()関数とfwrite()関数につ...
-
ASCIIコードへの変換方法
-
char*を初期化したいのですが
-
小数点入りの文字列をfloat型に...
-
C言語にて構造体のメンバがNULL...
-
メモリを0クリアする方法について
-
char AA[]{"全角文字"};から"全...
-
文字列についていい方法はあり...
-
SetWindowTextについて。
-
ostringstreamではまりました
-
char 文字列型 の表現範囲が-12...
-
文字列置換のアルゴリズムを教...
-
2次元配列の文字"列"の初期化方法
-
文字の色
-
C言語 strstrの実装
-
C言語の文字リテラル中の16進文...
-
文字列の途中から途中までを抽出
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
char*を初期化したいのですが
-
C言語にて構造体のメンバがNULL...
-
C言語のintとcharの違いってな...
-
CStringからchar*への型変換に...
-
C言語のプログラムについてです
-
小数点入りの文字列をfloat型に...
-
new charとnew char[N]の違いは?
-
char型にint型の数値を代入する。
-
エクセルのMID関数は、C言語では?
-
fstream型オブジェクトを関数の...
-
動的メモリの初期化方法について。
-
const char* s1とただのchar s1...
-
char 文字列型 の表現範囲が-12...
-
文字列の途中から途中までを抽出
-
strcat関数を自作したいです
-
2次元配列の文字"列"の初期化方法
-
DWORDとcharの変換
-
C言語で文字列をかえす正しい書...
-
szとlpszの違い
-
fgetc( )の戻り値はなぜ整数??
おすすめ情報