[Tech] Domanda di C

Daniele Masini d.masini@tiscali.it
Ven 9 Lug 2004 10:34:17 CEST


se buffer è dichiarato come

int16_t buffer[n];

dove n è la dimensione del vettore (ovviamente n >= 10) e

int dispari[a];
int pari[b];

dove a >= 5 e b >= 5, allora il ciclo seguente dovrebbe funzionare

for(i=0; i<5; i++)
{
   dispari[i]=buffer[2*i];
   pari[i]=buffer[2*i+1];
}

Saluti,

Daniele


Valerio Montagnani wrote:

> Ciao a tutti.
> 
> Se ho un vettore di 10 di int16_t.
> Lo volgio dividere in due vettori di 5 celle, in modo che il primo
> vettore contenga i numeri dispari e il secondo quelli pari.
> Ho pensato di usare un ciclo del tipo:
> 
> for(i=0; i<5; i++) {
>   dispari[i]=buffer[2*i+sizeof(int16_t)];
>   pari[i]=buffer[2*i+1+sizeof(int16_t)];
> }
> 
> ma i valori che ottengo sono tutti sbagliati.
> 
> L'operazione giusta non è quella di dire al compilatore di prendere la
> locazione di memoria alla posizione, per esempio 2*i e sommarci l'offset
> legato alla rappresentazione del tipo di intero?
> 
> Grazie, Vale
> 



Maggiori informazioni sulla lista flug-tech