No.2
- 回答日時:
ご存じかとは思いますが、コンピュータは全て数値で動いてます。
文字に見えるものも全て数値なのです。
fprint()関数なども、数値を文字列として表現するだけで、
内部では数値として扱っているわけです。
char 型の変数といっても中身はタダの整数値ですしね。
char 型でループのカウンタを作って動かしてみると分かります。
>ご存じかとは思いますが、コンピュータは全て数値で動いてます。
>文字に見えるものも全て数値なのです。
ですね。
処理を行うまでのコンピュータに渡される値は1,0までに
なるんですよね。
あんまり型に惑わされないようにします。
ありがとうございました。
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型が一番処理しやすいんでしょうね。
これから、アスキーコードの課題をやるのでいい勉強になりました。
文字は数字で変えられるんですね驚きました。
どうも細かいところまでありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Ruby プログラミング 3 2023/06/09 14:30
- Java java 入力された文字列を数値に置き換えて整数にし、計算をしたいです。 <を10として /を1とし 4 2022/05/16 21:08
- 数学 同値関係の問題です。わかる方教えてください。 実数の集合Rにおいて関係Rを、 xRy⇦⇨x-yは整数 3 2022/07/28 00:12
- 統計学 統計学の問題です よろしくお願いします 代表値 次の15件のデータについて,以下の問いに答えよ。 結 1 2023/01/31 18:53
- 統計学 統計学の問題です よろしくお願いします 代表値 次の15件のデータについて,以下の問いに答えよ。 結 5 2023/01/31 23:35
- Excel(エクセル) 列の複数ある空白セルを飛ばして、セルに並べて表示したい 3 2023/02/12 16:49
- 統計学 確率統計です。赤玉が 3 個、白玉が 7 個入った袋がある。 3 2022/05/07 08:36
- C言語・C++・C# プログラミング 2つの整数を読み込んで、等しければ 「二つの値は同じです」と表示し、そうでなければ, 4 2023/05/15 16:03
- 数学 数A 整数の性質 x.yを整数とする。 2x-3y=7-①をみたす(x,y)に対して、x^2-y^2 2 2023/06/01 15:39
- PDF C#でfloatを整数部、小数部とも桁数固定で文字表示したい 2 2022/07/28 09:37
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語にて構造体のメンバがNULL...
-
char*を初期化したいのですが
-
コマンドライン引数 *argv[]は...
-
C言語のintとcharの違いってな...
-
char 文字列型 の表現範囲が-12...
-
CStringからchar*への型変換に...
-
小数点入りの文字列をfloat型に...
-
エクセルのMID関数は、C言語では?
-
ポインタを使用 [数字列を数値...
-
C言語:小文字を大文字に変換す...
-
文字列のswap
-
WritePrivateProfileString
-
csvファイルをfscanfで読み込む...
-
WM_CHAR or WM_KEYDOWN の「wPa...
-
char AA[]{"全角文字"};から"全...
-
fstream型オブジェクトを関数の...
-
文字列str内の全ての数字を...
-
const char* s1とただのchar s1...
-
C言語で文字列をかえす正しい書...
-
動的メモリの初期化方法について。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
char*を初期化したいのですが
-
C言語のintとcharの違いってな...
-
CStringからchar*への型変換に...
-
C言語にて構造体のメンバがNULL...
-
小数点入りの文字列をfloat型に...
-
C言語のプログラムについてです
-
strcat関数を自作したいです
-
fstream型オブジェクトを関数の...
-
new charとnew char[N]の違いは?
-
DWORDとcharの変換
-
文字列の途中から途中までを抽出
-
char 文字列型 の表現範囲が-12...
-
const char* s1とただのchar s1...
-
wsprintf( ポインタ , "%d" , "...
-
c言語でポインタ変数を用いた配...
-
char型にint型の数値を代入する。
-
C言語で文字列をかえす正しい書...
-
C++17で、unsigned char * 配列...
-
共用体について
-
エクセルのMID関数は、C言語では?
おすすめ情報