C语言数据类型,类型转换

1. 数据类型

  1. 字符型:char,1字节,-128-127
  2. 无符号字符型:unsigned char,1字节,0-255
  3. 整形:int,unsigned int,4字节
  4. 短整形:short,2字节,-32768-32767
  5. 无符号短整形:unsigned short,2字节,0-65536
  6. 长整形:long,unsigned long,4字节
  7. 单精度浮点数:float,4字节
  8. 双精度浮点数:double,8字节
  9. 长双精度浮点数:long double,10字节
  10. 长整形:long long,8字节

2. 类型转换

2.1. 隐式转换

2.1.1. 算数转化
  • 整形提升:char, short, int等类型在一起运算时,首先提升到int
  • 混合提升:以表达式中最长类型为主,将其他类型位转换成该类型
    char short => int => long => long long => float => double
2.1.2. 赋值转化

整形和实形之间相互赋值

  • 整形到实形:加0
  • 实形到整形:去小数位
2.1.3. 隐式转化规则

char short => int => long => long long => float => double

2.2. 强制转换

当隐式类型转化不能满足时,就需要强制类型转化
格式:(类型)待转表达式

#include <stdio.h>
int main(void) {
	int a = 3; int b = 10;
	float c = b/a;
	printf("%f\n", c); // 3.000000
	float c = (float)b/a;
	printf("%f\n", c); // 3.3
	return 0;
}

2.3. 浮点数跟0值比较

int main()
{
  // 面试题:请写一段小程序,比较浮点数和零的值的大小
  double tmp = 0.0; 
  if (tmp > 0 - 0.000001 && tmp < 0 + 0.000001) // 可能会有精度问题,0.3 => 0.2999999 0.7 => 0.699999,所以才这么判断的
  {
    printf("tmp == 0\n");
  }
  else
  {
    printf("tmp != 0\n");
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Qi妙代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值