×

常量表达式不能为变量

常量表达式不能为变量(为什么在c++中定义数组时数组的常量表达式不能包含变量)

admin admin 发表于2023-06-09 18:52:43 浏览40 评论0

抢沙发发表评论

本文目录

为什么在c++中定义数组时数组的常量表达式不能包含变量


你是指常量表示数组大小,还是初始值?但不管是什么,都原理一样,以数组大小为例,在C++中,有些变量是在编译期间,编译器就给分配空间的,有的是运行时候才分配空间,对于编译期间就分配空间的变量,编译器一定要知道它是多少长度的,才能分配适合那个长度的空间,静态数组,临时变量,全局变量之类都是这样。你放变量在里面,当然编译期间都不知道这个数组的大小,当然不行了。这类变量一般是在栈上分配空间,只不过不同类型变量位于栈的不同段。
有些变量是在运行期间分配空间的,这样的变量里面可以有变量,因为变量的值在运行期间可以确定,系统就知道为它分配多少空间。但一般这类变量是在堆上分配空间。

C#什么是可选参数和必须参数


简单的区别就是在调用的时候,可选参数可以不传入值,而必须参数必须传入值;
1、可选参数,是指给方法的特定参数指定默认值,在调用方法时可以省略掉这些参数。
但要注意:
(1)可选参数不能为参数列表的第1个参数,必须位于所有的必选参数之后(除非没有必选参数);
(2)可选参数必须指定一个默认值,且默认值必须是一个常量表达式,不能为变量;
(3)所有可选参数以后的参数都必须是可选参数。
比如函数可以这样定义
int fun(string para1,int para2=0,int para3 = 0)
{}
这里para1为必须参数,para2和para3为可选参数,实际上只是可选参数有默认值而已;

C语言中常量表达式


C语言中的常量与常量表达式与变量在程序运行过程中,其值不能被改变的量,称为常量。整型常量:1,0,-1实型常量:8.2,-3.55字符常量:’a’, ’c’。常量一般从其字面形式即可判断。这种常量为字面常量或直接常量。整型常量可分为:int, short int, long int, unsigned int, unsigned short, unsigned long.浮点常量可分为:float, double, long double字符常量:字符串常量:变量: 变量代表内存中具有特定属性的一个存储单元,它用来存放数据,也就是变量的值。就是比如cout《《5*8+2/6《《endl; 表达式的值是一个定值,而不包含变量的式子!那可不可以认为常量表达式就是常量?一般情况可以的,只要没变量就可以了。常量表达式顾名思义表达式由常量表示,如 double a = 3d + 2.1 + sizeof(double);整型表达式是表达式由整型数据表示.a[n];维大小n必须为整型,系统不会自动将一个低精度的数转换为高精度的数,所有a[3.4]不正确,必须为a[(int)3.4]----------------------------------表达式就有由一串“数字”和“符号”组成的式子,例如1+2是表达式,12*8-1*99也是表达式。C++的“符号”除了普通的算术运算+-*/之外还有其他的。常量表达式就是表达式里面只有常量的式子,比如1+2是常量表达式,如果定义a为常量1,那么a+2也是常量表达式。如果定义变量a,那么a+2就不是常量表达式。
在这里数组强调的是常量,也就是说数组的下标的取值,在此默认大家已经知道数组的下标是什么要的,就是给个强调不要太去计较为啥这么说

在定义数组时,数组大小必须是常量,不能使变量或变量表达式


对于传统的 C 数组(C90),必须用常量表达式指明数组的大小。
C99/C11新增了变长数组,可以用变量表示数组大小。
声明一个简单的一维数组形式如下:
type name [ size ];
这里,type是数组中每个元素的数据类型,name是数组名,size是数组元素的个数。
对于传统的C数组,要求size是整型常量表达式。
但是C99/C11允许使用整型非常量表达式,这种情况下的数组被称为变长数组。

求教 说明中说的为什么和老师说的不一样啊老师说常量表达式中不可以用变量的啊 即使定义了也不行啊


常量表达式中可以包括常量、常变量和符号常量,但不能包含变量。你们老师没有说错啊。

#include 《stdio.h》
void fun(int n)
{
int a[2*n];
}
int main()
{
fun(5);
return 0;
}

不要太相信书上说的,有疑问的话,自己可以输入上面的代码验证一下是对还是错的,而事实上编译会报错。


switch语句中case后可为常量或表达式和有确定值的变量及表达式吗


switch语句中case后可为常量或简单的表达式(不可以有函数调用),不可以有任何的变量及变量表达式。
switch 语句必须遵循下面的规则:
switch 后的圆括号中是一个常量表达式,必须是一个整型或枚举类型。
在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
所以,case 后面必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。不可以是变量,或含有变量的表达式。