Ho una funzione:

codice:
 

typedef struct CvScalar
{
    double val[4];
}
CvScalar;

 CvScalar  cvScalarAut( double val0, double val1 ,
                               double val2 , double val3 ){
    CvScalar scalar;
    scalar.val[0] = val0; scalar.val[1] = val1;
    scalar.val[2] = val2; scalar.val[3] = val3;
    return scalar;
}

CvScalar test = cvScalarAut( 234,10,45,200);

printf(" %f %f %f %f %f \n",test, test.val[0], test.val[1],test.val[2],test.val[3]);
Ottengo :
234,10,45,200,234

Come mai test corrisponde al 1° valore dell'array della struct e test.val[0] mi dà il secondo valore e non il primo?
E test.val[3] mi dà ancora il primo valore?