3

整数定数式は次のような整数定数で構成されていることをどこかで読んだことがあります。

(5 + 5) //integer constant expression

それは私が見た唯一の例でした。

今、言う標準から:

(C99 6.6/6) 整数定数式は整数型を持ち、整数定数、列挙定数、文字定数、結果が整数定数である sizeof 式、およびキャストの即値オペランドである浮動定数であるオペランドのみを持つものとします。整数定数式のキャスト演算子は、オペランドの一部として sizeof 演算子を除いて、算術型のみを整数型に変換します。

それで、私が正しければ、これらすべての整数式は以下にありますか?

int i; float f = 3.14f;

i = 42;
i = f;
i = (int)(5/3.14f);
4

1 に答える 1

6

(int)(5/3.14f)整数定数式ではありません。

cast の即値オペランドではない浮動定数を使用しています。

もちろんi = f;、オブジェクトfには整数定数式ではありません。

于 2012-12-29T12:40:15.637 に答える