举个栗子:
unsigned int a = 20;
signed int b = -130;
a > b 还是 b > a
实验证明b > a;
b = -130 int 先转化为unsigned int再与a比较
隐式转换四种情况
1:算式运算式中,低类型能够转换为高类型
2:赋值表达式中,右边表达式的值自动隐式转换为左边变量的类型,并赋值给它
3:函数调用中参数传递时,系统隐式地将实参转换为形参的类型后赋给形参。
4:函数由返回值时,系统将隐式地返回表达式类型转换为返回值类型,赋值给调用函数
char,short----->int------->unsigned ------->log-------->double<--------float
低级-------------------------------------------------------------->高级
结构之间的强制类型转换
#include “stdio.h”
struct A {
int num;
};
struct B {
int num;
char type;
};
int main(void)
{
struct A a;
a.num = 1;
struct B b = (struct B)(&a);
printf(“b->num = %d\n”,b->num);
}
struct A与struct B可以相互强制类型转换的原因是两个结构体的高地址区域的数据类型存储
对应的数据。也就是说首地址的数据的数据类型必须要相同。
数组是一种特殊的指针
int a = 10;
int *p = &a;
printf(“a=%d,*p = %d, p[0] = %d, p[1] = %d”,a, *p, p[0], p[1]);
a = 10; *p = 10 p[0] = 10 p[1] = 乱码