はじめまして。色々と調べたのですが、答えが見つかりませんでしたので質問をさせて頂きました。
double型の配列をインクリメントする処理があった場合、正しくインクリメントされるでしょうか?
例えば、以下の場合になります。
コンパイラに依存するとか、double/float型のインクリメント/デクリメントは出来ないとか調べた限りではありましたが、どれも根拠がはっきりしませんでした。
ちなみに、a[5]=a[5]+1(a[5]+=1)とするのは承知しております。
ダメな場合、その理由を明確にしたいのでご存じの方がおられましたら教えて頂けますでしょうか?
よろしくお願いいたします。
double型変数のインクリメント
Re: double型変数のインクリメント
標準規格に準じる限り,可能です。
規格には,適用対象について以下のように書いてあります。
ISO/IEC 9899:1999 6.5.2.4 Postfix increment and decrement operators
見ての通り,double対する適用に関して制限はありません。
もちろん,浮動小数点数の誤差に紛れる可能性はありますが,それは++演算子の適用可否とは関係ありません。
規格には,適用対象について以下のように書いてあります。
ISO/IEC 9899:1999 6.5.2.4 Postfix increment and decrement operators
ISO/IEC 14882:2003 5.2.6 Increment and decrementThe operand of the postfix increment or decrement operator shall have qualified or unqualified real or pointer type and shall be a modifiable lvalue.
# C++の方は旧版です。The operand shall be a modifiable lvalue. The type of the operand shall be an arithmetic type or a pointer to a complete object type.
見ての通り,double対する適用に関して制限はありません。
もちろん,浮動小数点数の誤差に紛れる可能性はありますが,それは++演算子の適用可否とは関係ありません。