一 隐式类型转换
概念
所谓隐式类型转换就是在编译时由编译程序按照一定规则自动完成,而不需人为干预。
总则
1、算术运算式中,低类型能够转换为高类型。
2、赋值表达式中,右边表达式的值自动隐式转换为左边变量的类型,并赋值给他。
3、函数调用中参数传递时,系统隐式地将实参转换为形参的类型后,赋给形参。
4、函数有返回值时,系统将隐式地将返回表达式类型转换为返回值类型,赋值给调用函数。
其他:
1. 强制类型转换后原变量的类型不变
int i;
float f = (float)i;
此后i的类型还是int型;
2. 不允许声明无具体类型的void数组
void ch[ ]; //错误,declaration of ‘str’ as array of voids
3. 允许声明void*类型,但是使用前一定要确定其类型
void *str;
str = "hello";
char* sstr = (char*)str;
for(int i=0;i<5;i++) {
printf("%c\n",srt[i]); //错误,invalid use of void expression
printf("%c\n",((char*)str)[i]); //正确,但是str的类型并未改变,还是void *;
printf("%c\n",sstr[i]);
}