1、变量的强制类型转换:
小类型转换为大类型时可以不转换;大类型转化为小类型时需要强制转换。
2、指针变量的强制类型转换
1) 对于不同类型的指针进行赋值时需要强制类型转换,否则不能通过VC编译。
2) 大类型指针可以直接转换为小类型指针,小类型指针转换为大类型之前之前必须先将其转换为(void *)。虽然小类型指针直接强制类型转换为大类型指针,VC编译不会报错,但这种做法是危险的。比如将char型指针转换为int型时,可能会产生内存越界。
以上只是对实际问题的一种分析,个人还是建议大家在对不同类型的变量或者指针变量进行赋值时都进行强制类型转换。
举例如下:
char *pcTemp = NULL;
int *piTemp = NULL;
char cTemp = 0;
int iTemp =0;
/* 正确用法 */
iTemp = cTemp;
cTemp = (char) iTemp;
pcTemp = (char *) piTemp;
piTemp = (int *)(void *) pcTemp;
/* 错误用法 */
cTemp = iTemp;
piTemp = (int *) pcTemp;