Cast en C
Publicado por Jorge (1 intervención) el 06/06/2011 23:34:08
Porque al compilar el siguiente código, arroja el error
"line 14.13: 1506-017 (S) Operand of address operator must be an lvalue or function designator."
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
char str_num[10];
double dbl_num, *ptr_dbl, *ptr_dbl2;
memset(str_num,0,sizeof(str_num));
strncpy(str_num,"2345.6",6);
str_num[6]='\0';
dbl_num=atof(str_num);
ptr_dbl=&dbl_num;
ptr_dbl2=&atof(str_num);
printf("STR_NUM:[%s]\n",str_num);
printf("DBL_NUM:[%f]\n",dbl_num);
printf("PTR_DBL:[%f]\n",*ptr_dbl);
printf("PTR_DBL:[%f]\n",*ptr_dbl2);
}
No debiera ser lo mismo:
dbl_num=atof(str_num);
ptr_dbl=&dbl_num;
Que:
ptr_dbl2=&atof(str_num);
Como se puede solucionar para que sea una sola linea sin tener que pasar por uan variable temporal.
"line 14.13: 1506-017 (S) Operand of address operator must be an lvalue or function designator."
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
char str_num[10];
double dbl_num, *ptr_dbl, *ptr_dbl2;
memset(str_num,0,sizeof(str_num));
strncpy(str_num,"2345.6",6);
str_num[6]='\0';
dbl_num=atof(str_num);
ptr_dbl=&dbl_num;
ptr_dbl2=&atof(str_num);
printf("STR_NUM:[%s]\n",str_num);
printf("DBL_NUM:[%f]\n",dbl_num);
printf("PTR_DBL:[%f]\n",*ptr_dbl);
printf("PTR_DBL:[%f]\n",*ptr_dbl2);
}
No debiera ser lo mismo:
dbl_num=atof(str_num);
ptr_dbl=&dbl_num;
Que:
ptr_dbl2=&atof(str_num);
Como se puede solucionar para que sea una sola linea sin tener que pasar por uan variable temporal.
Valora esta pregunta


0