基本データ型の演算

ARM コンパイラでは、ISO C99 標準および ISO C++ 標準の関連セクションで定義されている通常の算術変換を実行します。以下のサブセクションでは、術演算に関する補足事項について説明します。

式の評価 も参照して下さい。

Show/hide整数型の演算

整数型の演算には以下の規則が適用されます。

  • すべての符号付き整数演算には、2 の補数表現が使用されます。

  • 符号付き整数型のビットごとの演算は、2 の補数表現から自然に生じる規則に従います。符号拡張は行われません。

  • 符号付き数値の右シフトは算術演算です。

  • int 型の値の場合、

    • 0 ~ 127 の範囲外のシフトは定義されません。

    • 31 を超える左シフトが行われると、ゼロが返されます。

    • 31 を超える右シフトが行われる場合、符号なし値または正の符号付き値のシフトではゼロが返されます。負の符号付き値でこのようなシフトを行と、-1 が返されます。

  • long long 型の値の場合、0 ~ 63 の範囲外のシフトは定義されません。

  • 整数除算の剰余の符号は、ISO C99 標準で規定されている分子の符号と同じです。

  • 整数型の値が短い符号付き整数型に切り捨てられる場合は、適切な数の最上位ビットを破棄することで結果が求められます。そのため、元の数がきすぎると、値の正負にかかわらず、結果の符号と元の符号が同じにならないことがあります。

  • 整数型同士の変換では例外は発生しません。

  • 整数のオーバーフローでは例外は発生しません。

  • ゼロによる整数除算では、デフォルトでは 0 が返されます。

Show/hide浮動小数点型の演算

浮動小数点型の演算には、以下の特徴があります。

  • 通常の IEEE 754 の規則が適用されます。

  • デフォルトでは、最も近い表現可能な値に丸められます。

  • デフォルトでは、浮動小数点例外はディセーブルになっています。

--fpmode=modelも参照して下さい。

Note

浮動小数点の処理に関する IEEE 754 標準では、例外に対するデフォルトのアクションとしてトラップなしで続行することが定義されています。fenv.h 内の関数と定義をカスタマイズすることで、浮動小数点エラーの処理方法を修正することができます。詳細については、ARM® C および C++ ライブラリと浮動小数点サポートの使用』エラー通知、エラー処理、プログラム終了処理のための C ライブラリ関数の変更(2-86 ページ)を参照して下さい。

Show/hideポインタ減算

以下は、C のすべてのポインタに適用されます。また、メンバへのポインタを除く C++ のポインタにも適用されます。

  • あるポインタから別のポインタを減算する場合の差は、以下の式の結果になります。

    ((int)a - (int)b) / (int)sizeof(ポインタの参照先の型)
    
  • ポインタがオブジェクトを指し、そのオブジェクトの境界整列がオブジェクトのサイズと等しい場合は、この境界整列によりこの除算は必ず割りれます。

  • ポインタがオブジェクトを指し、パック型や大部分の struct のように、そのオブジェクトの境界整列がオブジェクトのサイズよりも小さい場合は、どちらのポインタも同じ配列の要素を指している必要があります。

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0491EJ
Non-ConfidentialID081711