C モジュロが負の数を返すのはなぜですか?

Susan Sarandon
リリース: 2024-11-25 12:42:12
オリジナル
237 人が閲覧しました

Why Does C   Modulo Return Negative Numbers?

モジュロを使用すると C が負の値を出力するのはなぜですか?

Python とは対照的に、C は正の除数を使用したモジュロを使用すると負の値を出力します。これは、ISO/IEC 14882:2003(E):

「両方のオペランドが非負の場合、剰余は非負です。そうでない場合、剰余の符号は実装定義。"

この定義により、除算と剰余が実行されるプロセッサ命令セットで一般的な最適化が可能になります。

負の剰余は、次のルールとの一貫性を保証します。

  • 整数除算の商はゼロに向かって丸められます。
  • 被除数式 (dividend = quotient *)除数の剰余) は結果によって満たされます。

これは、次の場合を意味します。負の数を正の数で割ると、商は負 (またはゼロ) になります。

この仕様の理論的根拠には次のものが含まれます。

  • プロセッサ命令セットの効率と簡素化。
  • 丸め方の一貫性と除算方程式の尊重。
  • C の効率重視
  • C と C の互換性。

負の剰余は直感に反するように見えるかもしれませんが、これは C のモジュロの実装定義の性質の結果です。整数除算との一貫性を確保し、パフォーマンスを最適化します。

以上がC モジュロが負の数を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート