ホームページ >バックエンド開発 >C++ >モジュロ演算子をゼロで使用するとどうなりますか?

モジュロ演算子をゼロで使用するとどうなりますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-08 10:12:01718ブラウズ

What Happens When You Use the Modulo Operator with Zero?

ゼロによるモジュロの未定義動作への対処

プログラミングでは、モジュロ演算子 (%) を使用して、1 を除算したときの剰余を決定します。別の番号。ただし、除数 0 で使用すると、式 X % 0 は無効になり、未定義の動作が引き起こされます。

この動作は、ゼロによる除算が未定義であるモジュロの数学的定義に由来します。論理的には、X をゼロで割った余りが X になるはずなので、X % 0 が X に等しいと期待する人もいるかもしれません。しかし、C 標準では、ゼロによるモジュロは未定義の動作を引き起こすと明示的に述べています (§5.6/4):

[...] If the second operand of / or % is zero the behavior is undefined; [...]

したがって、式:

X / 0; // Undefined behavior
X % 0; // Undefined behavior

は C では無効とみなされます。予測できない誤った動作を防ぐために、コード内でこのような式を避けることが重要です。

さらに、1 つのオペランドが負の場合の剰余の符号は実装定義であることに注意することが重要です (§5.6/4)。

[...] If both operands are nonnegative then the remainder is nonnegative; if not, the sign of the remainder is implementation-defined.

したがって、-5 % 2 のような式は常に期待した結果を返すとは限らず、動作は状況に応じて異なる場合があります。実装。

以上がモジュロ演算子をゼロで使用するとどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。