偶学编程,也许本身就是一个错。。。
在定义的时候,如果我用int arr[4]={1,1,1};我定义了4的大小,但是只赋值3个,这时候后面两个会被负默认值0,也就是a[3]==0成立
如果我定义的时候用int arr[]={1,1,1};等价与int arr[3]={1,1,1},这时候后面的空间并没有分配给arr,arr[3]的值是不确定的
在定义的时候,如果我用int arr[4]={1,1,1};我定义了4的大小,但是只赋值3个,这时候后面两个会被负默认值0,也就是a[3]==0成立
如果我定义的时候用int arr[]={1,1,1};等价与int arr[3]={1,1,1},这时候后面的空间并没有分配给arr,arr[3]的值是不确定的
int arr[1]={1,2,3};通不过编译,你可以自己试嘛。读取数据是什么结果我已经说了
/* 晕,忘说了,运行环境 Dev—C++4.9.9.2,英文原版,官网下的。*/
#include<stdio.h>
int count,total1,total2,total;
int array1[]={1,1,1,1,1},array2[]={3,3,3,3,3,7};/* 他的运行结果为何是30,多了3的一倍 ;把count<7,(3,3,3,3,3,7,8)结果为41,多了3的两倍;把count 给成8,(3,3,3,3,3,7,8,9)这又是正确的了*/
int main(void)
{
for(count=0;count<6;count++)
{
total1+=array1[count];
total2+=array2[count];
}
printf("%d",total1+total2);
system("PAUSE");
return 0;
}
数组越界,C语言是不会提醒的,仍能执行,不过会产生垃圾数据。
你的计算结果是拉圾数据造成的。array1[]元素与for()不匹配。