tghk.net
当前位置:首页>>关于i+=j; 怎么理解的资料>>

i+=j; 怎么理解

假设数组为 a[2][3] = {{0, 1}, {2, 3}}; i=0, j=1; 则*(*&a[i]+j), *&a[i], *&操作互相抵消, 所以*&a[i]就相当于a[i], 当i=0时, 也就是0的地址, (a[i]+ j), 当i=0, j=1,时, (a[i]+ j)就是 a[0][1]的地址, 于是*(a[i]+ j)就是取内容了...

相当于有一个四行五列,如果按照行看后面的数比前一个大1,如果从列看下面的比上面的大五,a[i][j]=i*5+j就是把i *5 + j 的结果赋给数组a[i][j]

++的优先级大于+,所以i+++j相当于(i++)+j

i==(++j)是先j自增在比较 所以这个时候j=2 (i++)==j 是先比较再自增 所以这个时候i还是等于2,比较完成之后i变成3

a[i]+j =&a[i][j]= *(a+i)+j ,代表的是二维数组元素地址 a[i][j]=*(a[i]+j)=*(*(a+i)+j),代表的是二维数组元素的值 以上都是指针不同的写法,多看看关于指针的文章,自己上机多实验,才能增强理解

++被称为自增~ n++叫做后自增~ 那么效果就是n = n +1; 比如n是6 a[i][j]=n++的实际效果就是a[i][j]=6然后进行++操作,这时候再去看n就变成了7

是的,而且只能这样理解。 ++、--的优先级高于+,因此加不加括号,运算都是一样的,先运算++、--,再运算+

本来i+4是一个int类型的指针变量,不能直接赋给j 因为j是char类型的指针变量,要将i+4赋给j 就得将i+4转化成语j相同的类型,(char*)(i+4)表示将int类型的指针变量i+4强转为char类型的指针变量

i=5,j=0for(;i;i&i-1)//我觉得应该是i=i&i-1,要不然无法跳出循环 j++;是这样吧我大致给你写一下 /*首先要理解什么按位与< & > 你可以百度一下也可以就看我的解释: 一个十进制是以二进制存在内存中的--举例: 9:0000 0000 0000 1001 8:0000 0...

网站首页 | 网站地图
All rights reserved Powered by www.tghk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com