在数组中,第一个元素的索引为零。所以一个数组声明为:
int a[5];
应该有一个[4]作为最后一个元素。但是,当我执行以下代码时:
int n;
cin>>n;
int a[n];
for(int i = 0; i++<n; cin>>a[i]);
for(int i = 0; i++<n; cout<<i<<" "<<a[i]<<endl);
并输入:
5 1 2 3 4 5
输出结果为:
1 1
2 2
3 3
4 4
5 5
这意味着a [5] = 5.我想知道这是怎么可能的。它不应该显示一些垃圾值吗?
答案 0 :(得分:3)
将remove_action( 'storefront_content_top', 'woocommerce_breadcrumb', 10 );
更改为i++ < n
,将i < n
更改为cin>>a[i]
答案 1 :(得分:2)
逻辑。你做错了。考虑colors.
:
您的n = 5
是i
。您确实检查4
是否为真,经过检查后,我会增加。
我现在i++ < 5
,这是不合格的。
你的循环实际上是从1到5而不是0到4。
将代码重写为:
5
答案 2 :(得分:0)
不应该显示一些垃圾值吗?
教导单元化变量具有垃圾值或访问数组会产生垃圾值实际上是一种损害。
在C ++中访问未初始化的变量或数组超出界限是未定义的行为。这意味着程序可以以任何方式运行。它可以崩溃,它可以看似起作用,它可以是任何行为,它可能看起来在单元化变量中有垃圾值。
答案 3 :(得分:0)
或者你可以替换
int i=0
int i=-1
和
i++
++i
现在循环将运行并按预期输入从[0]到[4]的值。
代码可以重写为:
for(int i=-1;++i<n;cin>>a[i]);
for(int i=-1;++i<n;cout<<i<<" "<<a[i]<<endl);