为什么这些定义在C语言中不合法?

问题描述 投票:0回答:1

我正在阅读有关C的书,但我不理解这个概念:

另一个常见的误解是将const限定变量视为常量表达式。在C中,const表示“只读”,而不是“编译时间常数”。因此,像const int SIZE = 10这样的全局定义; int global_arr [SIZE];和const int SIZE = 10; int global_var =大小;在C中不合法。

我也不太了解const变量和常量表达式之间的区别。所有const变量都是常量表达式,对吗?我已经阅读了有关此主题的其他问题,但我仍然没有体会。谢谢。

c const
1个回答
0
投票

它们的意思基本上是,使用const限定变量来初始化另一个变量或使用它确定数组的数组大小是非法的。

我也不太了解const变量和常量表达式之间的区别。所有const变量都是常量表达式,对吧?

没有常量表达式是一个总是被求值为相同值的表达式-求值是常量。因此,可以在编译时对其进行评估。

F.e。:

5 + 4 

总是9。

但是这个:

const int SIZE 5;
...
5 + 9 + SIZE; 

不是常量表达式,因为它隐含了一个变量。尽管变量SIZEconst,但此处不能使用。

而常量变量不是常量表达式,因为它是变量:

const int a = 50;
© www.soinside.com 2019 - 2024. All rights reserved.