- 问答
我不理解,ce?
- 2022-12-8 20:39:42 @
#include
using namespace std;
int yzs=1;
long long x[yzs];
int main(){
return 0;
}
为什么会编译不过
foo.cc:4:15:error size or array'dh'is no an integral constant-expression
4|long long x[yzs];
^
10 条评论
-
zhengzhiyun2011 @ 2023-8-17 14:31:10
那些喊要含在主函数内的是没搞清楚,放在主函数内能够编译通过是因为C语言有动态数组,可以在函数内使用变量(非常量)定义数组大小,而ISO-C++不允许动态数组,只不过g++能够编译通过,但是开启ISO-C++检查的情况下会进行警告。正确的做法是,把表示数组容量的yzs变为常量,例如下面这样
const int yzs=1; // 这里也可以使用constexpr long long x[yzs]; int main(){ return 0; }
-
2023-1-2 10:08:40@
- 没有头文件
-
2023-1-1 21:45:32@
这是你的源代码:
#include using namespace std; int yzs=1; long long x[yzs]; int main(){ return 0; }
有如下问题:
1.头文件没了
如果是Vsual C++项目,请添加头文件<iostream>
如果使用Dev-C++进行编译,请添加头文件<bits/stdc++.h>
2.数组定义时出现错误
(1)最重要的,数组大小不对
编写代码时无法使用大小为1的数组,建议将zxy改为>1的数值
(2)如果是Visual C++项目,请这样定义数组:
int *x=new int[zxy]//关键字new是进行动态内存申请,VC++没法使用变量定义数组
应该这样改:
# include <iostream> using namespace std; int zxy=3; long long x[zxy]//或者是`int *x=new int[zxy] int main() { //其他操作 return 0; }
-
2022-12-24 15:07:48@
1.include,应为:
#include<bits/stdc++.h> //或 #include<iostream>
2.格式,应为:
int main(){ int yzs = 1; long long x[yzs]; return 0; }
-
2022-12-21 7:46:22@
要放主函数内(我就问一句,你开大小为1的数组用来干嘛)
-
2022-12-11 11:23:17@
@hisxhst2022 你把int yxs = 1和long long x[yzs]放在主函数内,不然系统编译的时候会找不到yzs
-
2022-12-9 16:55:57@
数组大小不能是变量
-
2022-12-8 21:14:34@
你的头文件有问题,改成:
#include<bits/stdc++.h>
using namespace std;
int yzs=1;
long long x[yzs];
int main(){
return 0;
}
-
2022-12-8 20:43:18@
少了const?
- 1