タグ

cに関するyoshii_hirotoのブックマーク (5)

  • C++の新しいキャスト

    C++の新しいキャスト 従来のキャストの問題点 異なる型への変換において、C/C++ではキャストが用いられます。 // intからlongへのキャスト int ival; int lval = (long)ival; ご存知のとおり、キャストは非常に危険です。 来ならば型の不一致によるコンパイルエラーをねじ伏せるのですから。 キャストの使われ方(意味)は、大きく3種(型変換/型変更/const外し)に分類されます。 型変換 // int から double へ int ival; double dval = (double)ival; 型変更 // long から int* へ long lval; int* iptr = (int*)lval; const外し // const int* から int* へ const int* ciptr; int* iptr = (int*)cip

  • C++ 演算子の優先順位 [C++ Reference]

    ↑ sizeof の被演算子に C スタイルの型キャストは使用できません。 式 sizeof (int) * p は sizeof((int)*p) ではなく (sizeof(int)) * p と曖昧性なく解釈されます。 ↑ 条件演算子の中央の式 (? と : の間) は括弧で囲まれているかのように解析され、 ?: との相対的な優先順位は無視されます。 式を解析するとき、ある優先順位を持つ行に掲載されている演算子は、それより低い優先順位を持つ行に掲載されているいかなる演算子よりも、その引数をよりタイトに (括弧で囲まれたかのように) 束縛します。 例えば、式 std::cout << a & b は std::cout << (a & b) ではなく (std::cout << a) & b と解析され、式 *p++ は (*p)++ ではなく *(p++) と解析されます。 同じ優先順

  • 初心者のC言語

    since:2002.06.02 更新に手が回らずすみません。 ANSI規格でもいいよという方は 御覧ください。m(_ _)m

  • 知っておきたい整数除算の豆知識

    割り算とは何を意味するか C言語では、整数同士の割り算(/)は結果を切り捨てて整数にします。つまり、3/2は1.5ではなく 1になります。また整数同士については剰余(%)が計算できます。これは割り算したあまりです。 たとえば5%3は2となります。 一般にmをnで割った商がaであり、剰余がbであるとは、次の関係式が成立することを言います。 m = n*a + b (ただし 0 数学で定義されているのは、m,nともに正の場合だけです。しかし、現実にはint型の演算として 定義されている以上は、何かの計算結果を出さなければなりません。 たとえば、m=-5, n=3の場合を考えてみます。上の関係式は必ず満たさなければならないので、 次のどちらかを採用することになるのです。上の場合には、剰余が負になってしまうという 不具合があり、下の場合には商がプラスの場合と絶対値が同じにならないという不具合があ

  • sizeof演算子

    せりか式 - C 言語チュートリアル - sizeof演算子 sizeof演算子について検索してくる人が多いようなので,真面目にsizeof演算子についても書いておくことにします. 簡単に言うと,sizeofに渡された型や変数のメモリサイズを調べるものです. sizeof演算子は2種類の使い方があります. sizeof(型) sizeof 変数や定数,あるいは式など 前者の型を与える方は特に悩む必要は無いと思います. 単に指定した型が利用するメモリサイズを返すものです. 問題は,後者の変数や定数を渡す方です. sizeofに変数を渡した場合,その変数名で確保されているメモリサイズを返します.

  • 1