今天,当我开发C程序时,我的一所大学指出我做错了什么。
他说我正在执行的与下面的代码相似的代码是错误的,并且您不能基于另一个常量定义一个常量。该程序最终还是正常工作,而我却想知道他是否正确。下面的代码是否错误/违反了最佳做法?
const int num=5;
const int num2=num*2;
这些不是常数。它们是int
带有const
限定符的变量。在const
该变量不能由程序被写入到限定符装置。实际整数常量表达式的例子包括5
,2 + 3
,和sizeof(int)
。这是完整列表。
在文件范围内,第二行违反约束,因为变量的名称不是常量表达式。约束为C11 6.7.9 / 4:
具有静态或线程存储持续时间的对象的初始化程序中的所有表达式应为常量表达式或字符串文字。
(在文件作用域声明的变量具有静态或线程存储持续时间)。
在块范围内,该代码还可以,因为初始化器不需要在那里是常量表达式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句