トップページ
ひらく | たたむ | ページトップ
↓マウスで反転選択した文字を検索
C
   
ページ内検索 ページ外検索
検索したい文字を入力して
ENTERを押すと移動します。
\n
[ トップページ ]
[ ____CommandPrompt ] [ ____JScript ] [ ____MySQL ] [ ____Cygwin ] [ ____Java ] [ ____Emacs ] [ ____Make ] [ ____Perl ] [ ____Python ] [ ____OpenGL ] [ ____C# ] [ ____StyleSheet ] [ ____C++ ] [ ____Winsock ] [ ____Thread ] [ ____VisualStudio ] [ ____C ] [ ____Win32API ] [ ____Lua ] [ ____PhotoShop ]
ヘッダ検索
___

■ キャスト(Cast)


  DESC
     整数のかくあげ

    整数を扱う式で, int として表現できる型は int に変換
    char, short, bf, enum -> [ int | uint ]

___

■ 算術変換

      整数同士の式は unsigned が常にかつ
     整数同士の式は int として表現できる型は int に変換
     浮動小数の式は 十分な大きさの最小の型に格上げされる
    unsigned int n = 10;
    int i = 0;

    for( i=0; i< n; i++ ){

    } 

___

■ 代入時の自動的型変換

    int b = 7;
    float a = b;
POINT キャストとは malloc などでデータ領域を確保し、 その領域をある型の配列などとして 使用するために使うのが主たる使用法
___

■ 暗黙の型変換

[ == ] は演算の一種暗黙の型変換が起こる 「int型→float型→int型の場合」はbug の可能性あり 有効桁数が少ないfloat型に変数aの「123,456,789」大きなint型の値を代入すると、 有効桁数不足から誤差が発生結果変数b「1.23456792×10の8乗」という値 WARNING int型とfloat型間の代入では誤差の発生が付き物 コンパイルエラーにはならない INVALID : 不定
___

■ 関数型( 関数ptr )の考察

DESC 関数 ptr はキャストすれば
___

■ ptr < -> integer

POINT int -> any ptr への変換は OK DESC integer 型式は ptr と +- 可能 2. ptr -> int( ptr 表現可能な大きさ ) -> ∵ ( ptr も 整数値 ) 3. int -> ptr 4. aPtr < -> bPtr 4. 同一型 obj への ptr の相互変換 { fooObj *a, *b; a = b; } 5. func ptr 同士の変換 int *p; p + 5; // ptr を int 型に格納( cast いるかも ) { int a = 7; int p = (int)&a; printf("%d\n", *((int *)p)); } // 異なる obj 間の ptr 変換 ( mem 配置の整合性があえば OK ) { typedef struct { int a; int b; }base; typedef struct { int a; int b; int c; }derive; { base b = { 4, 5 }; derive *d = (derive *)&b; printf( d->a ); printf( d->b ); } // funcPtr 間の変換 { int (*fPtr)(); void (*gPtr)(int, int); // できない ? fPtr = gPtr; }
___

■ int < -> float

DESC float -> int : 少数部分むし. INVALID( int で表現不能 | -float -> uint ) int -> float : 表現可能な近似値
___

■ float < -> double

DESC float -> double : NOCNG double -> float : 表現可能な近似値. INVALID( float の範囲外 からの変換 )
















NINJAIDX 16