英数字の値をintデータ型で格納できるか

英数字の値をintデータ型に格納することはできますか?それを格納するにはcharが必要ですか?

0
もともと、この質問の50%はタグと感謝でした。
追加された 著者 Lightness Races in Orbit,

4 答え

Alphanumeric values are not values. They are numbers like everything else, but they follow a specified mapping numer -> character.

例えば、文字 'A'はASCIIエンコーディングに従って 65 です。唯一の違いは、あなたがそれらを扱う方法です:数値として扱うならば、それらを数値として出力します。そうでなければ、エンコーディングを出力します。 char データ型は、1バイトのサイズを持つ単なる int です。 1バイトで拡張ASCIIテーブル全体を格納できるだけであるからです。実際の「文字」データ型はありません。

短い答え:はい。

7
追加された
あなたは申し訳ありませんが、結論を忘れて:)
追加された 著者 Jack,
はい、それは奇妙なことですが、私はそれがすでに世界のどこかで起こったと思います:)
追加された 著者 Jack,
@イグナシオ:あなたは高いASCIIを好むですか?またはEASCII?または何?
追加された 著者 Jack,
ああ、まあ、あなたは正しいが、それは彼に "シングルバイト文字セット"が何であるかを説明する別の質問を開いてしまうだろう。複雑にしないでください:)
追加された 著者 Jack,
それで、まあ.. "はい"。
追加された 著者 Lightness Races in Orbit,
"拡張ASCII" 近辺
追加された 著者 Ignacio Vazquez-Abrams,
"任意のシングルバイト文字セット(たとえば、CP437、Latin-1など)"
追加された 著者 Ignacio Vazquez-Abrams,
if(val == 'A')... else if(val == 65)のように、英字と数値の両方の「値」を > int で、2つの異なるものだと考えてください。
追加された 著者 AusCBloke,
私は驚いていません。
追加された 著者 AusCBloke,

はい、 int データ型で文字を格納できます。 char int のような整数データ型ですが、保証範囲は狭いです。

実際には、文字を格納するために char ではなく int を使用するのが正しいことがあります。つかいます:

int c;

while ((c = getc(file)) != EOF)
{
    /* Do something with c */

この場合、 c のタイプに char ではなく int を使用して、 code>を有効な文字から削除します。

2
追加された

charは1バイトのデータ型です(したがって、0〜255の値を持つことができます)。

It has a number -> char mappping.

#include 

int main() {
  char c = 'a';
  int n = c;
  printf("Character '%c' stored in int as %d\n", c, n);
}

出力:

Character 'a' stored in int as 97
1
追加された

int データ型で文字を格納できます。 char は、1バイトに格納できる int のような整数データ型です。 char データ型は、ASCII文字セット(256文字)を格納することができます。 ASCIIマッピングは、0〜255の範囲の数字を文字にマップします。 char は整数データ型であるため、文字に関連付けられた番号を代入演算によって int に格納できます

1
追加された