加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在c中使用const

发布时间:2020-12-16 03:13:20 所属栏目:百科 来源:网络整理
导读:我是C的新手,我正在经历一本C书,它说 const int i[] = { 1,2,3,4 };float f[i[3]]; // Illegal 它说在编译期间float变量的声明是无效的.为什么? 假设我们使用 int i = 3;float f[i]; 有用. 第一种情况有什么问题? 谢谢. 解决方法 所以第一个是非法的,因为
我是C的新手,我正在经历一本C书,它说
const int i[] = { 1,2,3,4 };
float f[i[3]]; // Illegal

它说在编译期间float变量的声明是无效的.为什么?

假设我们使用

int i = 3;
float f[i];

有用.

第一种情况有什么问题?

谢谢.

解决方法

所以第一个是非法的,因为一个数组必须有一个编译时已知的绑定,而我[3]严格来说在编译时已经知道,不符合“编译时已知”的语言设置条件.

同样的原因,第二个也是非法的.

然而,这两种情况通常都将被GCC接受,因为它支持C99型运行时大小的数组作为C中的扩展.把这个国旗交给海湾合作委员会,让它抱怨.

编辑:C标准术语是“积分常数表达式”,符合条件的资料在本标准的第5.19节中有详细描述.确切的规则是不平凡的,C11具有更广泛的范围,因为constexpr有资格,但在C98中,法律事务列表大致如下:

>整数文字>仅涉及常量的简单表达式>非类型模板参数的积分类型>整数类型的变量声明为const,并用常量表达式初始化

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读