C语言数据类型隐式转换

举个栗子:
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] = 乱码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值