C 中的常量值

标签 c constants

此代码无法编译:

const int x = 123;
const int y = x;

它提示 y= 行的“初始化器元素不是常量”。 基本上我想要两个 const 值,一个根据另一个定义。 有没有办法在 C 中执行此操作,还是我必须使用类型不安全的 #defines 或只是将值按字面意思写为魔数(Magic Number)?

最佳答案

当分配 const 类型时,您只能分配文字,即:1、2、'a'、'b' 等,而不是像 int x、float y、const int z 等变量。变量,尽管您的variable is really not variable(因为它不能改变)是 Not Acceptable 。相反,你必须这样做:

const int x = 123;
const int y = 123;

#define x 123
const int y = 123;

第二个有效,因为编译器会在编译前去除所有 x 的地方并用文字替换它。

关于C 中的常量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5739273/

相关文章:

c - void f(char const * const p) 中的第二个 const 重要吗?

c++ - 如何从 const 方法调用非 const 方法?

c - 为什么访问数组中的元素需要常数时间?

c - 套接字编程将多个客户端连接到一台服务器并列出它们 C

c - 如何在不循环的情况下扫描并比较数组中的值

c - 使用 char 指针的段错误 (C)

c - Linux 内核,const 转换函数

c++ - 相同的 const 类型限定符

c - 在 NUMA 架构中按线程移动内存页

c - Stack ADT实现中难以理解的表达