2011-03-16 16 views

答えて

14

何について:

int a_as_int = (int)'a'; 
+9

実際に '' C++とは異なり、Cですでにintです。 – UmmaGumma

+2

引数に必要な参照を追加します:http://stackoverflow.com/questions/433895/why-are-c-character-literals-ints-instead-of-chars – xanatos

1

Cのchar値がintに暗黙的に変換されます。例えば、char c; ... printf("%d", c)は、cの10進ASCII値を出力し、int i = c;は、にASCIIの整数値cを置きます。明示的に(int)cと変換することもできます。 ASCII桁をintに変換する方法など、何かを意味するならば、暗黙的にcをintに変換した後、'0'のASCII値、つまり48(Cでは、'0'のような文字定数)を減算するc - '0'になります。歴史的な理由からchar型ではなくint型です)。

9

あなたはこのために探しています:

int c = some_ascii_character; 

それとも割り当てずに変換:

(int)some_aschii_character; 
+0

私は最初のものを探していましたが、 2番目の方法も同様に機能します。 –

1

あなたはASCII序値を意味ですか?誰もがあなたがそれを直接変換することができ、あなたに言ったよう...あなたはどのように私はそのUTF-16またはUTF-にASCII拡張文字を変換することができます」のようなものを意味しない限り

int x = 'a'; 
+0

@Jim Balter申し訳ありませんが、明白なのですが、私はこれがC++とは対照的にどのようにC++であるのだろうと思っていました。用語のせいか、何か不足していますか? – quasiverse

+0

@quasiverse編集を見てください。つまり、 "43分前"のリンクをクリックしてください。私のコメントは48分前に投稿されたことに注意してください。これは一般的に注意してください。 –

+0

おっと、愚かな私は、私がそれを投稿したときに見た回ですが、もちろんそれは人々がそれを読むときに表示されるではありません。 –

1

:この1のようなタイプのキャストを試してみてください32値」となる。これは全く異なる質問です(少なくとも1つは良いと思います)。 https://stackoverflow.com/questions/114611/what-is-the-best-unicode-library-for-c/114643#114643

(ASCIIエクステンションの場合、これはASCIIセットの多くの「拡張」の1つを意味します)。ここでは「純粋な」Cのみを使用しています。基本ASCIIセットの0〜127文字はUnicodeに直接変換できますが、128-255はUnicodeに直接変換できません)。たとえば、ISO_8859-1 http://en.wikipedia.org/wiki/ISO_8859-1は、7ビットASCIIセット、または(有名な)コードページ437と850の8ビットの拡張です。

+1

任意のUTF形式のASCII(0-127)文字は、整数表現と同じです。 –

+0

@Chrisしかし、少なくとも50%の時間、誰かがASCIIを話すとき、彼は「ASCII拡張」を意味します...しかし、はい、このメモを返信に入れるのは面白いでしょう。ありがとう。 – xanatos

+0

ASCII文字の範囲は0〜127です。したがって、UTF-16またはUTF-32に変換するのは単なるキャストです。おそらくUTF-8やISO 8859-1などのさまざまなバイトコードを変換するなど、何か違うものを意味しているかもしれません。 –

3

私はAshotとCwanに同意しますが、アスキー暗号7のようなintに '7'のように?

は、それから私は星いくつ:

​​

か、多分あなたは警告、コメント後に修正

int i = (int) (seven - '0'); 

、感謝を取得します。

+0

Cの警告はありません。 –

+0

警告があった場合は、より大きな型( ''7' 'がint)をより小さい型(char)に変換する最初の行で取得する可能性が高くなります)。 –

0

文字定数から対応するASCII int値に手動でマップを書き込む場合を除き、C99標準ライブラリでは使用できません。

'a'のようなCの文字定数は、ASCIIであるとは限りません。

C99は、これらの定数についていくつか保証しています。そのdigits be contiguous

単語ASCIIのみフッタノートにC99 N1256 standard draftに表示され、フッターノート173)は言う:7ビットの米国のASCII文字セットを使用して実装で

、印刷文字は、そのこれらの あります値は0x20(スペース)から0x7E(チルダ)までの間にあります。制御文字は、 の値が0(NUL)から0x1F(US)、および文字0x7F(DEL)にあるものです。

そのASCIIを暗示

)が唯一の可能性

1

が関数ATOIを(整数にASCIIを使用していない。

#include <stdlib.h> 

int num = atoi("23"); 
関連する問題