s += a[i];是什么意思,还有为什么最后等于20? a[i]=i; 是什么意思?

作者&投稿:保莎 (若有异议请与网页底部的电邮联系)

a[i]=i是一个循环赋值。

第一次循环:a[0]=0;第二次循环:a[1]=1;一直到第9次循环:a[9]=9。

int a[ ]中,a表示数组名,代表数组的首地址,可以看成一个常量,不可更改。

括号中的数组元素个数在有初始化数据时,可省,按初始化实际数据个数分配数组空间。如: int a[]={1,2,3,4,5}; //a占5个整型数据空间。

数组所占内存空间,可用sizeof命令计算得到,如:sizeof(a)=5*4=20。

扩展资料:

赋值语句是由赋值表达式再加上分号构成的表达式语句。  

其一般形式为:变量=表达式;  

在赋值语句的使用中需要注意:  

由于在赋值符“=”右边的表达式也可以又是一个赋值表达式,因此,下述形式变量=(变量=表达式);是成立的,从而形成嵌套的情形。其展开之后的一般形式为:变量=变量=…=表达式;  

例如:a=b=c=d=e=5;按照赋值运算符的右接合性,因此实际上等效于:e=5;d=e;c=d;b=c;a=b;

参考资料来源:百度百科-赋值语句



a[10]=1.2.3.4.5.6.7.8.9.10。
主程序是输出sum(a,8)的值。
来看看sum(a,8):
sum函数中:len=8
s=0;
接下来是一个循环:
for(i=0;i<8;i++)if(i%2)s+=a[i];
看一下运行过程:
第一次进入循环,i=0,i=0<8成立,进入循环体。i%2=0%2=0,if语句不成立,返回到for语句。
第二次进入循环,i=1,i=1<8成立,进入循环体。4%2=1%2=1,if语句成立,执行s+=a[1],相当于执行s=s+a[1]=0+2=2,返回for语句。
第三次进入循环,i=2,i=2<8成立,进入循环体。i%2=2%2=0,if语句不成立,返回到for语句。
第四次进入循环,i=3,i=3<8成立,进入循环体。i%2=3%2=1,if语句成立,执行s=s+a[i]=2+4=6,返回for语句。
第5次进入循环,i=4,i=4<8成立,进入循环体。i%2=4%2=0,if语句不成立,返回到for语句。
第6次进入循环,i=5<8成立,进入循环体。i%2=5%2=1,if语句成立,执行s=s+a[5]=6+6=12,返回for语句。
第7次进入循环,i=6<8成立,进入循环体。i%2=6%2=0,if语句不成立,返回到for语句。
第8次进入循环,i=7,i=7<8成立,进入循环体。i%2=7%2=1,if语句成立,执行s=s+a[i]=12+a[7]=12+8=20,返回for语句。
第9次进入循环,i=8,i=8<8不成立,跳出循环体。
return s,返回s的值20。
有什么问题请留言。

程序中char *a,a[i]=='*是什么意思,a[i]是地址嘛,为什么会等于‘*’这个值?~

在函数头里,那个char *a 的意思是一个char 型的指针变量,指向数组用的。
a[i] = '*',就是a数组里第i个元素为星号。。

a[i]=i是一个循环赋值。
第一次循环:a[0]=0;第二次循环:a[1]=1;一直到第9次循环:a[9]=9。
int a[ ]中,a表示数组名,代表数组的首地址,可以看成一个常量,不可更改。
括号中的数组元素个数在有初始化数据时,可省,按初始化实际数据个数分配数组空间。如: int a[]={1,2,3,4,5}; //a占5个整型数据空间。
数组所占内存空间,可用sizeof命令计算得到,如:sizeof(a)=5*4=20。

扩展资料:
赋值语句是由赋值表达式再加上分号构成的表达式语句。
其一般形式为:变量=表达式;
在赋值语句的使用中需要注意:
由于在赋值符“=”右边的表达式也可以又是一个赋值表达式,因此,下述形式变量=(变量=表达式);是成立的,从而形成嵌套的情形。其展开之后的一般形式为:变量=变量=…=表达式;
例如:a=b=c=d=e=5;按照赋值运算符的右接合性,因此实际上等效于:e=5;d=e;c=d;b=c;a=b;
参考资料来源:百度百科-赋值语句