c - 在 C 中,您可以根据另一个常量定义一个常量吗?

标签 c constants

今天,当我开发一个 C 程序时,我的一所大学指出我做错了什么。

他说我正在做的类似于下面代码的代码是错误的,你不能根据另一个常量定义一个常量。 不管怎样,这个程序最终还是成功了,我想知道他是不是对的。 下面的代码是否错误/违反了最佳实践?

const int num=5;
const int num2=num*2;

最佳答案

这些不是常量;它们是带有 const 限定符的 int 变量。 const 限定符意味着该变量不能被程序写入。实际整数常量表达式的示例包括 52 + 3sizeof(int)Here is a full list .

在文件范围内,第二行违反了约束,因为变量的名称不是常量表达式。约束是 C11 6.7.9/4:

All the expressions in an initializer for an object that has static or thread storage duration shall be constant expressions or string literals.

(在文件范围内声明的变量具有静态或线程存储持续时间)。

在 block 范围内,代码是可以的,因为初始化器在那里不需要是常量表达式。

关于c - 在 C 中,您可以根据另一个常量定义一个常量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42965285/

相关文章:

c - 后缀表达式求值 : how much stack memory is required?

c - MUMPS - 在调用 MPI_INIT 之前调用 MPI_Comm_f2c() 函数

c - 文件按行作为字符串输入到数组中

c - magmablas_dgemm 不适用于更大的网格尺寸

c++ - 我应该将这些方法声明为 const 吗?

c - 终端输出不是逻辑分析仪得到的

c - 为什么 GLib 在这些函数中不使用 'const'?

JAVA - 如何在不同的类中使用 Enum 作为公共(public)静态最终字符串?

perl - 为什么这不会永远运行?

Ruby - 使用 'const_set' 定义常量和类中的简单大写常量名称有什么区别?