double型変数のインクリメント

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
yasuo

double型変数のインクリメント

#1

投稿記事 by yasuo » 7年前

はじめまして。色々と調べたのですが、答えが見つかりませんでしたので質問をさせて頂きました。
double型の配列をインクリメントする処理があった場合、正しくインクリメントされるでしょうか?
例えば、以下の場合になります。

コード:

int main(void)
{
    double a[10];

    a[5] = 0;
    a[5]++;

    return 0;
}
 
コンパイラに依存するとか、double/float型のインクリメント/デクリメントは出来ないとか調べた限りではありましたが、どれも根拠がはっきりしませんでした。
ちなみに、a[5]=a[5]+1(a[5]+=1)とするのは承知しております。

ダメな場合、その理由を明確にしたいのでご存じの方がおられましたら教えて頂けますでしょうか?
よろしくお願いいたします。

YuO
記事: 936
登録日時: 8年前
住所: 東京都世田谷区

Re: double型変数のインクリメント

#2

投稿記事 by YuO » 7年前

標準規格に準じる限り,可能です。

規格には,適用対象について以下のように書いてあります。
ISO/IEC 9899:1999 6.5.2.4 Postfix increment and decrement operators
The operand of the postfix increment or decrement operator shall have qualified or unqualified real or pointer type and shall be a modifiable lvalue.
ISO/IEC 14882:2003 5.2.6 Increment and decrement
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.
# C++の方は旧版です。

見ての通り,double対する適用に関して制限はありません。
もちろん,浮動小数点数の誤差に紛れる可能性はありますが,それは++演算子の適用可否とは関係ありません。

yasuo

Re: double型変数のインクリメント

#3

投稿記事 by yasuo » 7年前

ご回答ありがとうございました。
ISO規格を確認し、規格に準じる限り可能という事で理解いたしました。

閉鎖

“C言語何でも質問掲示板” へ戻る