まず、型変換
図1に示すように、暗黙的型変換
チャー C = ' A ' 。 int型 I = cを、
ここで、暗黙的な変換このコードのセクションでは、チャーがそれ以上、intに暗黙の型変換を発生する、送信パラメータ、戻り値、等も可能です。
図2に示すように、明示的な型変換
(1)キャスト
文字 Cは= ' A ' ; int型私は=(int型)C; // C言語スタイルの int型 = I INT(C); // C ++スタイル
(2)C ++互換キャストC、同時に型変換の4種類の形でオペレータを増加させながら
4型変換演算子のC ++形:
(1)静的型変換
特定の型の変数= static_castを<ターゲット・タイプ>(ソース型変数)
使用可能:void *型は、指標の他のタイプに変換することができます。。。
int型A; 無効 * PV =&A; // C ++コンパイラOK、CコンパイラOKの int型 * P = PV; // C ++コンパイラのエラー、CコンパイラOK //などの溶液
にint * PA =(int型*) PV;
int型* PA = static_castを<整数*>(PV); //ダブルクリッ> intは完了することができません(2)動的キャスト
特定の型の変数= dynamic_castを<オブジェクトタイプ>(ソース型変数):
(3)多くの場合、キャスト
特定の型の変数はconst_cast = <オブジェクトタイプ>(ソース型変数)
使用シナリオ:一定の基準や指針の属性を削除します
constの揮発性のint A = 10 ;定数が複数の読み取りを避けるために、レジスタにロードされているので//が揮発性でない場合、失敗する次の時間の値を変更するには、その役割は、コンパイラの最適化を防ぐためである のconstを int型 *&PAは= ; * PA = 20である ; //は、値が一定で、コンパイルされない のint *はconst_cast PA2 = < int型 *>(&A); // OK * PA2 = 20であり、定数を除去する//プロパティ
注意:
C ++コンパイラはデータ型を認識しない場合は、することができ、その後だけ認識タイプに変換し、ブールタイプと見なされる可能です。
(4)再説明型変換
特定の型の変数= reinterpret_castは<オブジェクトタイプ>(ソース型変数)
アプリケーションシナリオ:ポインタまたは参照変換の任意のタイプ、ポインターと整数などの間で変換
ポインタの整数がに変換されます。
// *(INT *)= 123 0xE0200080; C ++で次のステートメント完了するために使用されてもよい INT ADDR 0xE0200080を、 INTは * PADDR reinterpret_castは= < INT *> (ADDR); * PADDR = 123。ポインタ変換の任意のタイプ:
構造体のデータ{
char型[5]。
チャーACC [9]。
チャーのpasswd [7]。
}。
char型のテキスト[] = "0001 \ 00012345678 000888888 \"
データ* PDATA = reinterpret_castは<データ*>(テキスト); //今PDATAを動作させるために使用することができます。
第二に、要約
1、マクロを使用するように注意してください
あなたはCONST、列挙型、インライングローバルマクロ見えるので、置き換えを使用することができます。以下のような:
#defineし PAI 3.14; ---> constのダブルPAI = 3.14; #define ERROR 0; #define SUCCEDD 1; ----> NUM状態{ERROR、SUCCESS;} #define MAX(a、b)は(?(A)>(B)(A):( B))--->インラインINT maxは(int型B、INT){:B?> B Aを返します;}
初期化中2、変数は、ステートメントで使用します
3、新しいの使用を交換して削除しよう、mallocとfree
4、以下のvoid *、ポインタ演算、連邦は少なく、あまりキャストを使用します
5、表す文字列に文字列を使用