0

特に、符号なしの大きな数値と符号付きの大きな負の数値があります。

大きな数を負の数で割ることができないのはなぜですか C++

2 つを除算しようとすると、どこかで符号付きの数値が符号なし (つまり正でなければならない) に変換されているため、結果はゼロになります。>.>;

編集。

完全に明確にするために。私はそれがゼロに解決されたことを知っており、それに満足しています. 数値が符号付き数値から符号なし数値に変換されるため、ゼロに解決されるという前の理由にも満足しています。

ただし、そもそも数値が符号付き数値から符号なし数値に変換される理由には答えません。そうする論理的な理由はないようです。

4

1 に答える 1

2

算術演算子のオペランドは同じ型である必要があります。これにより、言語の定義と実装が容易になります。その理由の 1 つは、処理するケースが少なくなることと、ハードウェアが一般的に混合型操作をサポートしていないことです。正式には、C++ は仮想マシンの観点から定義されていますが、仮想マシンに期待される機能は、実際のハードウェアの機能に影響されます。標準で指示されているがハードウェアでサポートされていない操作 (架空の符号付き除算など) は、コンパイラ ライターがライブラリ コードで実装する必要があり、パフォーマンスに影響します。

符号付きオペランドを符号なしに変換するか、またはその逆にする必要があります。標準委員会は前者を選びました。

于 2014-02-16T05:33:10.573 に答える