C++の奇数は、剰余があるように分割された場合、またはこれに例外がないように、常に結果のfloorを返すことができますか?つまり、奇数は、剰余で除算すると常にfloorを返しますか?
int x = 5;
x = x/2;
cout<<x; //2
C++の奇数は、剰余があるように分割された場合、またはこれに例外がないように、常に結果のfloorを返すことができますか?つまり、奇数は、剰余で除算すると常にfloorを返しますか?
int x = 5;
x = x/2;
cout<<x; //2
偉大な、ありがとう:) – Straightfw
"通常"ではありません。これは必須です。 –
@Guvante:ハァッか。これは非常にうまくいくかもしれません。なぜなら、これはCの質問ではありません....... –
はい。あなたがCにそのことを確認することができます(草案)++
ISO/IEC N3485はい5.6.4
The binary/operator yields the quotient, and the binary % operator yields
the remainder from the division of the first expression by the second.
If the second operand of/or % is zero the behavior is undefined.
For integral operands the/operator yields the algebraic quotient with any
fractional part discarded;81 if the quotient a/b is representable in the type
of the result, (a/b)*b + a%b is equal to a; otherwise, the behavior of both
a/b and a%b is undefined.
作業草案から進んできました! C++ 11が存在する。 –
も無料で、この草案:-) –
これは言語標準ではないからです。この場合、もちろん番号とテキストは同じです。 –
で述べています。整数の間の分割は、C++で常に積分部門である:
[C++11 5.6/4]:
バイナリ/
オペレータは、商を生成し、バイナリ%
オペレータは、第による最初の式の除算の剰余を与えます。/
または%
の第2オペランドが0の場合、動作は未定義です。 整数オペランドの場合、/
演算子は、小数部が破棄された代数商を生成します。 の商a/b
が結果の型で表現できる場合、(a/b)*b + a%b
はa
に等しくなります。
はい。しかし、なぜ? ansの標準では5.6.4だから –
私は、ありがとうたくさん参照してください:) – Straightfw
分子が負の場合、結果はちょっと変になります。 –