web-dev-qa-db-ja.com

C ++では、unsigned charからintへ

たとえば、値が40の変数unsigned charがあります。その値を取得するにはint変数が必要です。それを行う最も簡単で最も効率的な方法は何ですか?どうもありがとうございました。

8
user1346664
unsigned char c = 40;
int i = c;

おそらくあなたの質問にはそれ以上のものがあるはずです...

14

次のいずれかを試してください。より具体的なキャストが必要な場合は、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;
5
Pierre23199223

あなたが何をしたいかに依存します:

値を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などを変換するには、次のように書くことができます

char a = '4';
int ia = a - '0';
/* check here if ia is bounded by 0 and 9 */
3

実際、これは暗黙のキャストです。つまり、値がオーバーフローまたはアンダーフローしないため、値は自動的にキャストされます。

これは例です:

unsigned char a = 'A';
doSomething(a); // Implicit cast

double b = 3.14;
doSomething((int)b); // Explicit cast neccesary!

void doSomething(int x)
{
...
}
2
bytecode77

Google は通常は便利なツールですが、答えは信じられないほど簡単です。

unsigned char a = 'A'
int b = a
1
NominSim