7 Ocak 2015, ÇARŞAMBA
Can't bir sayının karesini hesaplamak için bu yolu anlamak
Bir sayının Kare hesaplayan bir fonksiyon buldum:
int p(int n) {
int a[n]; //works on C99 and above
return (&a)[n] - a;
}
N değeri döndürür2. Soru, bunu nasıl yapar? Biraz test ettikten sonra, arasında (&a)[k]
(&a)[k 1]
sizeof(a)
/sizeof(int)
olduğunu buldum. Bu yüzden mi?
CEVAP
7 Ocak 2015, ÇARŞAMBA
Belli ki bir hack... ama *
operatör kullanmadan bir dizi Kare alma şekli (bu kodlama Yarışması isteğiydi).
(&a)[n]
int
bir işaretçi eşdeğer konumda
(a sizeof(a[n])*n)
ve böylece tüm ifade edilir
(&a)[n] -a
= (a sizeof(a[n])*n -a) /sizeof(int)
= sizeof(a[n])*n / sizeof(int)
= sizeof(int) * n * n / sizeof(int)
= n * n
Bunu Paylaş:
Konu gidişli veya etiketleri hesaplama...
Sin ve cos birlikte hesaplamak için en...
Nasıl bir yay (daire)için SVG Yolu hes...
Bir sayının tüm bölenlerine almak için...
Bir nesneyi klonlamak için en etkili y...