澄清整数常量表达式

时间:2012-12-29 12:35:01

标签: c c99

在某处我读过整数常量表达式包含整数常量,例如:

(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);

1 个答案:

答案 0 :(得分:5)

(int)(5/3.14f)不是整数常量表达式。

您使用的浮动常量不是直接操作的操作数。

当然在i = f;中,对象f不是整数常量表达式。