今天,当我开发一个 C 程序时,我的一所大学指出我做错了什么。
他说我正在做的类似于下面代码的代码是错误的,你不能根据另一个常量定义一个常量。 不管怎样,这个程序最终还是成功了,我想知道他是不是对的。 下面的代码是否错误/违反了最佳实践?
const int num=5;
const int num2=num*2;
最佳答案
这些不是常量;它们是带有 const
限定符的 int
变量。 const
限定符意味着该变量不能被程序写入。实际整数常量表达式的示例包括 5
、2 + 3
和 sizeof(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/