処理系定義の動作とは処理系に依存する動作のこと。処理系定義の動作には符号付き整数を右シフトした場合の最上位ビットの伝播法等があります。その処理系定義の動作を列挙してみます。
処理系定義の動作とは、処理系の特徴に依存する動作のことです。C言語の標準規格であるJIS X 3010:2003(ISO/IEC 9899:1999)では、次のように定義されています。「未規定の動作のうち,各処理系が選択した動作を文書化するもの。」このように、処理系定義の動作は、未規定の動作の一種です。未規定の動作は、動作として複数の可能性がありえ、規格上どの動作を選択するのか規定されない動作です。そのうち、処理系によってどの動作が選択されたかが文書化されたものが「処理系定義の動作」になります。例としては、符号付き整数を右シフトした場合の最上位ビットの伝播法等があります。
処理系定義の動作は、未定義の動作とは異なり、正常なプログラム動作です。処理系が同じなら動作に再現性があります。しかし、処理系が異なった場合、動作が異なる可能性があります。このため、プログラムの移植時に注意が必要となります。処理系定義の動作を把握しておくことは、移植性の高いプログラムを記述するために重要なことです。
処理系定義の動作にはどのようなものがあるのでしょうか。C言語の標準規格であるJIS X 3010:2003(ISO/IEC 9899:1999)の「附属書J 可搬性」を参考に列挙してみましょう。