私は、例えば40のような値を含む変数unsigned charを持っています。 int変数がその値を取得したい。 これを行う最も単純で効率的な方法は何ですか? ありがとうございます。C++のunsigned charからintへ
答えて
unsigned char c = 40;
int i = c;
おそらくそれよりもあなたの質問に多く存在しなければならない...
Google通常便利なツールですが、答えは非常に簡単です:
unsigned char a = 'A'
int b = a
char *a="40";
int i= a;
値'a'には40のASCII値が入ります(40にはなりません)。この関数は、文字列のためにあるので
は、代わりに
ちょうど注意するstdlib.hで定義されたstrtolは()関数を使用してみてください。それは文字のために動作しません
'a'(と' i')*の値は、あなたが今割り当てた値であるので、40になります。 –
コンパイラの警告を無視すると、 'i'が文字列" 40 "が格納されているアドレスを取得することがわかります。もちろん、 'a'にはそのアドレスが格納されています。ああ、その愚かなANSI標準の事の前に、良いオレの前に戻ってきます.Cが弱く型付けされたとき、プログラマーはより強い心を持ち、コカコーラは本当の砂糖で作られました!バハ!最近の子供たち..! Bah !! –
質問はunsigned charに関するものでした。なぜあなたはchar *を使用していますか? – Aamir
実際には、これは暗黙のキャストです。つまり、値がオーバーフローまたはアンダーフローしないように自動的にキャストされます。
これは一例です:
unsigned char a = 'A';
doSomething(a); // Implicit cast
double b = 3.14;
doSomething((int)b); // Explicit cast neccesary!
void doSomething(int x)
{
...
}
double-> intのために明示的なキャストが必要なのはなぜですか?それは暗黙のうちに切り捨てられませんか? – chris
はい、そうですが、コンパイラの警告が表示されるので、そうすることをお勧めします。 – bytecode77
奇妙なことに、私はGCCの最高レベルの警告を受け取りません。 – chris
はあなたが何をしたいかによって異なります。
ASCIIコードとして値を読み取るために、あなたは変換すること
char a = 'a';
int ia = (int)a;
/* note that the int cast is not necessary -- int ia = a would suffice */
を書くことができます文字 '0' - > 0、 '1' - > 1などを書くことができます。
以下のいずれかを試してみてください。より具体的なキャストが必要な場合は、Boostのlexical_castとreinterpret_castを確認することができます。
unsigned char c = 40;
int i = static_cast<int>(c);
std::cout << i << std::endl;
または:
unsigned char c = 40;
int i = (int)(c);
std::cout << i << std::endl;
- 1. unsigned char *をcのunsigned int *に変換する方法は?
- 2. C++でのIntへのchar?
- 3. Objective-Cのunsigned char *からchar *へのキャストの動作を定義
- 4. (int)(unsigned char)(x)はCで何をしますか?
- 5. Marshal unsigned char ** in c#
- 6. win32のCプログラミングでchar *をunsigned intに変換する方法
- 7. テンプレートパラメータにunsigned int型へのconst unsigned int型の変換
- 8. C#unsigned intデフォルト値
- 9. unsigned int mysql in C#
- 10. はunsigned char *のSymbian C++
- 11. スカラーcharからintへの変換
- 12. C++エラー: 'int'から 'const char *'への無効な変換[-fpermissive] |
- 13. cが<unsigned char型>
- 14. 'void *'から 'unsigned char *'への無効な変換
- 15. なぜunsigned char << unsigned charの結果がunsigned charではない
- 16. C++ int to char
- 17. 文字列(substrから)unsigned intへの変換
- 18. Charからint。 Haskell
- 19. const unsigned char *文字列またはconst char *への変換/ *
- 20. QByteArrayからunsigned charに変換する*
- 21. unsigned char comparision
- 22. ファイルストリームからunsigned charを読み取るC++
- 23. C++:UTF-8コードポイントからunsigned charを作成する方法
- 24. EVP_DigestUpdateと「『CONSTのchar *』に 『* unsigned char型』から無効な変換」
- 25. Cの符号付きchar []をunsigned char []に変換します
- 26. 'int'から 'const char *'への無効な変換
- 27. Cのバイナリからcharへの変換
- 28. Intと* Char-C++の配列
- 29. はint型とunsigned int型
- 30. C++ strcmpの 'char'から 'const char *'への変換
私はprintf関数を記述する場合( "C:X%" は、C)Iは32、私はINT I = Cを書き込む取得し、私が印刷するとき、 "i" はI 50を取得! – user1346664
@ user1346664: '%x'は16進数で表示されます。 32の16進数は50の小数に等しくなります。代わりに '%d'を使用してください。 –
本当に... THankss – user1346664