C ++奇怪的数组由用户输入
c++ weird array by user input
正如我在 c++ 中所知,如果你想创建一个数组,你必须为其大小提供常量值。但在这里:
int main(){
int a;
cin >> a;
int b[a] = {};
for (int i = 0; i<a ; i++){
b[i] = a;
cout << b[i];
}
return 0;
}
如果我输入 5
输出:
55555
它以一种我在 dev c++ 中无法理解的方式工作正常。如果我在Visual Studio 2017中运行它,它会出错。谁能解释为什么?
您是否有机会使用 GCC?这是一个 GCC 扩展,默认情况下处于启用状态。事实上,这是一个非常危险的选择,因为它很容易导致程序上的堆栈溢出。这与使用alloca()
大致相同。
为了禁用它,您应该使用名为-Wpedantic
的编译器标志。这将使编译器发出警告。(请参阅此演示(
ISO C++禁止可变长度数组 'b' [-Werror=vla]
正如我在 c++ 中所知道的,如果你想创建一个数组,你必须为其大小提供常量值。
正确。如果使用非常量值,则程序格式不正确。是的,您显示的程序格式不正确。
它以一种我无法理解的方式工作正常...谁能解释为什么?
C++编译器可能允许编译格式错误的程序。这使编译器能够扩展语言。您似乎正在使用非标准扩展来C++。
这是GCC编译器对你的程序的评价:
warning: ISO C++ forbids variable length array 'b' [-Wvla] int b[a] = {}; ^
相关文章:
- C++如何通过用户输入删除列表元素
- 如何使用用户输入在C++中正确填充2D数组
- C++MySQL C api用户输入行
- 如何只允许用户输入正整数
- C++如何计算用户输入的数字中的偶数位数
- 通过for循环使用用户输入填充列表
- 在C++中,我如何接受不同于同一行的用户输入
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 显示基于用户输入的整数的字符
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 打印时有二叉树问题.用户输入不打印任何内容
- C ++奇怪的数组由用户输入
- 如何允许大写和小写用户输入?
- C++读取用户输入而不按回车键(Mac OS X),与Turbo Pascal中的读取键相同
- 如何存储用户输入的所有数据,然后在他们想要查看所有数据时显示它们
- 如何使用用户输入变量制作二维数组?
- 用户输入字符串的文件附加问题..C++
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- 如何使用递归循环我的代码(当用户输入无效输入时,它会再次提示他们)?