gpt4 book ai didi

c - 文字和常量在C中是同一个概念吗?

转载 作者:太空狗 更新时间:2023-10-29 15:11:34 26 4
gpt4 key购买 nike

C中的字面量和常量是同一个概念吗?它们在使用上有什么区别吗?

最佳答案

Literalsconstants 在 C 中是截然不同的东西。可以说 C 中的术语 literal 代表未命名的对象,它占据内存(文字通常是左值),而术语常量 代表(可能命名)不一定占用内存的值(常量是右值)。

“经典”C (C89/90) 只有一种文字:字符串文字。那个 C 中没有其他类型的文字。C99 还引入了所谓的复合文字

同时,术语常量指的是明确的值,例如12.5f0xA。此外,枚举成员在 C 中也被识别为常量

同样,由于 C 中的文字是左值,您可以获取并使用它们的地址

const char *s = "Hello";
char (*p)[6] = &"World";
int (*a)[4] = &(int []) { 1, 2, 3, 4 };

因为常量是右值,所以你不能获取它们的地址。

const 关键字声明的对象在 C 术语中不被视为常量。它们不能用于需要常量值的地方(例如 case 标签、位域宽度或全局、静态变量初始化)。

附言请注意,C 中的相关术语与 C++ 中的相关术语有很大不同。在 C++ 中,术语文字 实际上涵盖了 C 中称为常量 的大部分内容。而在 C++ 中,const 对象可以构成常量表达式。人们有时会试图将 C++ 术语强加于 C,这通常会导致混淆。

(另见 Shall I prefer constants over defines?)

关于c - 文字和常量在C中是同一个概念吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11732795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com