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 回答