1. ホーム
  2. c++

[解決済み] C++形式のキャストでintをcharにキャストする [重複] [重複

2022-03-09 16:46:26

質問

従来のC言語では、こういったことができます。

int i = 48;
char c = (char)i;
//Now c holds the value of 48. 
//(Of course if i > 255 then c will not hold the same value as i).  

c++のキャストメソッド(static_cast、reinterpret_cast)のうち、この仕事を成し遂げるのに向いているのはどれでしょうか?

どのように解決するのですか?

数値型間の変換は、精度が落ちる場合でも暗黙のうちに行うことができます。

char c = i;

しかし、このような潜在的に損失の大きい変換を避けるために、コンパイラの警告を有効にしたい場合があります。もしそうするならば static_cast を変換します。

他のキャストの

  • dynamic_cast は、ポインタまたは多相クラス型への参照に対してのみ動作します。
  • const_cast は型を変更することができません。 const または volatile の修飾子があります。
  • reinterpret_cast は特殊な状況で、ポインタや参照と全く関係のない型との間で変換を行うためのものです。具体的には、数値の変換は行いません。
  • C スタイルおよび関数スタイルのキャストは、以下の組み合わせで行います。 static_cast , const_castreinterpret_cast が必要なのです。