介绍:当 C 程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个就是自动类型转换。
#include<stdio.h>
void main(){
char c1 = 'a';
int num1 = c1;//ok
double d1 = num1;//ok
short s1 = 10;
int num2 = 20;
int num3 = s1 + num2;
printf("d1=%f \n",d1);
printf("num3=%d",num3);
getchar();
}
int
型和 short
型运算时,先把 short
转成 int
型后再进行运算)。#include<stdio.h>
void main(){
float f1 = 1.1f;
double d2 = 4.58667435;
f1 = d2;//出现精度损失(double->float)
printf("f1=%.8f",f1);
getchar();
强制转换符 ( )
,但可能造成精度降低或溢出,格外要注意。(类型名) 表达式
什么是表达式: 任何有值都可以称为表达式,比如 1+ 2
, int num = 2
#include<stdio.h>
void main(){
double d1 = 1.934;
int num1 = (int)d1;//注意:不进行四舍五入,而是直接截断小数点的部分
printf("num1=%d d1=%f",num1,d1);
getchar();
}
(int)3.5
只针对这个数有效,转成 3
,最后结果 39.0
为double
型,强制转成 int
后去掉 0
int num2 = (int)3.5 * 10 + 6 * 1.5; // 3 * 10 + 6 * 1.5 = 30+9.0 = 39.0
printf("\n num2=%d",num2);
int num3 = (int)(3.5 * 10 + 6 * 1.5); // 35.0+9.0=44.0
printf("\n num3=%d",num2);
char c = 'a';
int i = 5;
float d = .314F;
double result = c+i+d; // c+i+d 类型是 float -> double ok
#include <stdio.h>
void main() {
char c = 'a';
int i = 5;
float d = .314F;
double d2 = 1.0;
//double result = c+i+d; // float -> double
char result = c+i+d+d2; // 提示? // 警告 double -> char
}