C语言数据类型转换

1.自动类型转换

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdint.h>
int main() {
	//1.隐式    算术转换  
	// 进行运算时,不同类型的数据必须转换成同一种类型才能运算
	//                    以表达式中 最长类型为主 ,将其它的类型转为该类型
	int a = 10;
	double b = 3.14;
	printf("a+b=%lf\n", a + b);//a+b=13.140000
printf("a+b=%d\n", a + b); // 不正常    a+b=343597384
//	char ch = 'a';
//	printf("ch=%d\n", ch + a);//107
//	//问题
//	printf("%lf", 12 / 3);//0.000000 不正常     ********
//	printf("%lf", 12 / 3.0);//4.000000    对的
//	//2.赋值操作
//	// 赋值符号 右边转成左边的类型 再赋值
//	char c = 'b';
//	int i, res;
//	i = 2;
//	double d = 1.5;
//	//float m = 1.20000;  //初始化”: 从“double”到“float”截断
//	float m = 1.20000f;
//
//	printf("c=%d\n", c);//98
//	//printf("c=%f\n", c);//c=0.000000      占位符和类型不符  (没有float)
//	printf("c=%lf\n", c);//0.000000
//
//	res = c / i + (d * m);//   98/2   =49       1.5*1.2=1.80000     49+1.8000      50
//
//	printf("res=%d\n", res);//“double”转换到“int”,可能丢失数据
//
3.输出转换
//
//	int a1 = 10;
//	printf("%lf\n", a);//0.000000
//
//	float b1 = 9.003f;
//	printf("%d\n", b1);

//------  ascII 表中 字符对应的数字  最大才是127 
	int c1 = 100; 
	//char d1 = (char)(c1 + 2);
	//printf("d1=%c", d1);//f
	char d1 = (char)c1 + 2;
	printf("d1=%c  %d", d1,d1);//d1=f  102


	int c2= 200;  // 超过 127就出问题    ********
	char d2 = (char)(c2);
	printf("d2=%c\n", d2);//?

	
	//int8_t    aa = -18;
	//aa = aa >>3;
	//	printf("%d\   %#x\n", aa, aa);//2   0x2

	//	printf("请输入一个字符:");
	//	char c;
	//	scanf("%c", &c);
	//	printf("%d\n", c);

}
/*
* int  char  double       字节小的向字节大的转
* char类型数据转换为int类型数据遵循ASCII码中的对应值.

* 自动转换  (隐式)

 强制转换
格式    (数据类型)(表达式)   注意括号
*/

 2.强制类型转换

基本格式:(数据类型)(表达式)

在使用强制转换时应注意以下问题:

  • 数据类型和表达式都必须加括号, 如把(int)(x/2+y)写成(int)x/2+y则成了把x转换成int型之后再除2再与y相加了。
  • 转换后不会改变原数据的类型及变量值,只在本次运算中临时性转换。
  • 强制转换后的运算结果不遵循四舍五入原则。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值