C'de Matrisler Hakkında

HelloWorld12
27-04-2018, 23:02   |  #1  
HelloWorld12 avatarı
OP Taze Üye
Teşekkür Sayısı: 0
2 mesaj
Kayıt Tarihi:Kayıt: Kas 2017

int main(){     
int d[ ][3][2]={4,5,6,7,8,9,10,11,12,13,14,15,16};     
int i=-1;     
int j;     
j=d[i++][++i][++i];     
printf("%d",j);     
return 0;
}
İki sorum var:
- Derleyici yukarıdaki üç boyutlu d dizisini d[2][3][2] olarak alıyor yani 12 elemanlı bir dizi olarak kabul ediyor ama 13 tane sayı yazdım son sayı boşta mı kalıyor?
-  j=d[i++][++i][++i]; işleminde i=-1 olduğu için j=d[-1][1][2] olmaz mı ama j=d[0][0][0] yani 4 olarak kabul ediyor ve 4 basıyor. Niye böyle kabul ettiğini anlamak için aşağıdaki programı yazdım:
int c[2][2]={9,1,2,3};
int i=-1,a;
a=c[i++][++i];
printf("%d",a);
Bu sefer direkt 0 bastı -1. indexi kabul etmedi. Ama yukarıda niye 4 basıyor?
int c[2][2]={9,1,2,3};
int i=-1,a;
a=c[++i][++i]; //tek fark i++ yerine ++i yazmam
printf("%d",a);
Bu sefer ise a=c[1][1] aldı 3 bastı ama a=[0][1] olmaz mı?
Cevaplarsanız sevinirim şimdiden teşekkürler