【C语言学习】数据类型转换

一、自动类型转换

1.当运算符两边的数据类型不同时,C语言会帮我们将其转换为较大的类型。即将数据转换成表达范围更大的类型。

将前一种类型转换为后一种类型
char --> short --> int --> long --> long long  
int --> float --> double

2.对于printf,任何小于int 的类型都会变转换成int;float会被转换成double

printf ("%f\n", a); \\无论是“float”还是“double”输出时都用"%f"即可,就是因为C语言会把float类型转换成double类型。

3.但是scanf不会,如果要输入short,需要%hd

#include
int main()
{
	short x;
	scanf("%hd", &x);
	printf("%d\n", x);
	return 0;
}

二、强制类型转换

1.要把一个量强制转换成另一个类型(通常是较大类型转换成较小类型),就需要(类型)值

例如
(int)10.2
(short)32

2.转换时需要注意数据的安全性,小的变量不总能表达大的量,即大转小时大的不能超过小的类型所能表达的范围,否则就会出现错误。

#include
int main()
{
	printf("%d\n", 32768);
	printf("%d\n", (short)32768);
	printf("%d\n", (char)32768);
	return 0;
}

【C语言学习】数据类型转换_第1张图片
3.强制类型转换只是从转换前的那个变量计算出了一个新的类型的值,并不会改变那个变量的值,也不会改变那个变量的数据类型。

#include
int main()
{
	int i = 32768;
	short s = (short)i;
	printf("%d\n", i);
	printf("%d\n", s);
	return 0;
}

【C语言学习】数据类型转换_第2张图片
4.强制类型转换的算术优先级高于四则运算。

double a = 1.0;
double b = 2.0;
int i = (int)(a/b);//i=0;


int a = 8;
int b = 6;
double i = (double)(a/b);//i=1.000000;

你可能感兴趣的:(C语言学习,c语言,学习)