复合字面量是否不是一个字面量?

5

从C in a Nutshell中:

第3章 字面量

在C源代码中,字面量是指表示固定值的标记,可以是整数,浮点数,字符或字符串。字面量的类型由其值和符号确定。

这里讨论的字面量与复合字面量不同,复合字面量是在C99标准中引入的。复合字面量是普通的可修改对象,类似于变量。有关复合字面量及用于创建它们的特殊操作符的完整说明,请参见第5章。

因此,字面量具有固定值,即它的值不能被修改,而复合字面量具有可修改的值。

根据这个,哪一个是正确的:

  • 复合字面量不是字面量,或者
  • 应该扩展字面量的定义,包括一个复合字面量作为唯一例外加入到固定值规则中?

谢谢。

1个回答

9

C11标准并未单独定义“字面值(literal)”一词。它只分别提到了“字符串字面值(string literal)”和“复合字面值(compound literal)”。

00.0enum { A }中的A'\0'这样的标记被统称为“常量”,分别是“整数常量”、“浮点常量”、“枚举常量”和“字符常量”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接