您的位置:首页 > 职场人生

C专家编程:第八章:为什么程序员无法分清万圣节和圣诞节

2018-03-11 16:15 330 查看
1、C语言中的类型提升
源类型
通常提升后的类型
char/unsigned char
int
位段(bit-field)
int
枚举(enum)
int
short/unsigned short
int
float
double
任何数组
相应类型的指针
2、隐式类型转换:算术转换、赋值转换和输出转换。
1)算术转换:进行算数运算(加、减、乘、除、取余以及符号运算)时,不同类型数必须转换成同一类型的数据才能运算,在进行运算时,以表达式中最长类型为主,将其他类型数据均转换成改类型。
2)赋值转换:进行赋值操作时,赋值运算符右边的数据类型必须转换成赋值号左边的类型,若右边的数据类型的长度大于左边,则要进行截断或舍入操作。
3)输出转换:在程序中将数据用printf 函数以指定格式输出时,当要输出的数据类型与输出格式不符时,便自动进行类型转换。
注意:较长型数据转换成短型数据输出时,其值不能超出短型数据允许的值范围,否则转换时将出错。如:
long  a = 80000;
printf("%d\n", a);
运行结果是14464,因为 int 型允许的最大值为32767,80000超出此值,故结果取以32768为模的余数,即(80000 -32768)- 32768 = 14464;
3、函数的强制类型转换:
int(*compar) (const void*, const void*);
int  intcompare(const  int  *i, const int  *j)
{
return(*i -  *j);
}
将函数 intcompare() 转换成 compar() 形式:
(int  (*) (const void*, constvoid*)) intcompare
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: