C语言基础-数据类型转换

算术运算时会进行类型转换

C语言会按照某些规则对操作数类型进行隐式转换, 总体的规则是把较低的类型(占位少的)转换成较高的类型(占位多),运算结果为较高的类型。在没有unsigned类型操作数参与时,一般按照下面的规则进行转换:

  • 如果一个操作数类型是long double类型,则另一个操作数也转换成long double型
  • 如果一个操作数类型是double类型,则另一个操作数也转换成double型
    • 注意float类型不会自动转换成double类型
  • 如果一个操作数类型是float类型,则另一个操作数也转换成float型
  • 将char和short类型转换成int类型
  • 如果一个操作数类型是long类型,则另一个操作数也转换成long型
    代码示例
#include <stdio.h>

int main(int argc, char const *argv[])
{
	int a = 10;
	float f = 11.5;
	char ca = '2'; // ASCII-50
	
	printf("int + float is float: %f\n", a + f);
	printf("int + char is int: %d\n", a + ca);
	
	return 0;
}

运行结果:

int + float is float: 21.500000
int + char is int: 60
赋值时会进行类型转换
  • 右侧的值会转换成左侧的类型
    • 当右侧的值占位超过左侧类型的占位时,会出现溢出现象
    • float类型到int类型,小数点后的部分会被截断
      代码示例
#include <stdio.h>

int main(int argc, char const *argv[])
{
	int a = 2;
	float f = 11.5;
	char ca = '2'; // ASCII-50
	
	a = f; // 小数部分截断
	printf("a is : %d\n", a);
	
	a = 257;
	ca = a; //溢出256-》0 257-》1
	printf("ca is: %d\n", ca);
	
	return 0;
}

运行结果:

a is : 11
ca is: 1
函数传参时会进行类型转换
  • 和赋值规则类似
  • char和short会转换成int
  • float会转换成double
    代码示例
#include <stdio.h>

double sum(int a, double b);
int main(int argc, char const *argv[])
{
	float f = 11.5;
	char ca = '2'; // ASCII-50
	
	printf("float + ca using sum return double:%f\n", sum(ca, f));
	
	return 0;
}

double sum(int a, double b){
	return a + b;
}

运行结果:

float + ca using sum return double:61.500000
强制类型转换

我们可以使用强制类型转换操作符,显示将表达式转换成某种类型。

(类型名) 表达式;// 将表达式计算的值赋值给类型名的变量,然后用该变量替换

注意 显示转换使用不当,会引发一些错误。
代码示例

#include <stdio.h>

int main(int argc, char const *argv[])
{
	int a = 10;
	float f = 11.5;
	char ca = '2'; // ASCII-50
	
	ca = (char)258; //显示将int转换成char,会溢出
	a = (int)f;
	printf("ca:%d\n", ca);
	printf("a:%d\n", a);
	
	return 0;
}

运行结果:

ca:2
a:11
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值