1: 大转小 : 字节大的类型的数赋值到字节小的类型的数上,小字节的类型
数据无法接受,所以输出的数为 0
例子:
#include<stdio.h>
void main(){
unsigned short a =256; //char字符型只有一个字节,short短整形有两个字节
char b= a; 简单看就是256超出char类型能够装载的最大值
printf("%d",b);
getchar();
}
2:隐式转换
实型和字符型数据之间可以混合运算
例如10+‘a’+1.5-8765.1234*'b'
用自己的话说就是不同类型的两个数相互运算,字节低的那个类型会向高字节类型转化,字节变为和高字节数据的字节一样,
#include<stdio.h>
void main(){
char i='a'; 字节少的往字节高的方向转 ‘a’计算转成ASCII码97,也就是一个整形
short l=3;
float j=8765.1234;
int k=10;
printf("\n%d,%d",sizeof(i+l),i+l);
printf("\n%d,%f",sizeof(i+j),i+j);
printf("\n%d,%f",sizeof(j+k),j+k);
getchar();
}
不同数据类型之间运算会进行自动类型转换 转换规则如下
低 int (char,short)
unsigned 运算类型不同时转换的方向
long
高 double (float)
低字节往高字节进行计算
3:强制转换
char b=10; //赋值改变数据类型
unsigned short a=b;
printf(“%u”,a);
//要点就是将各个位数提取出来,然后自己排列或者运算;
#include<stdio.h>
void main(){
int i,j,k,l,sum;
int num =123;
i=num/100; 求三位数123各位数相加的和
j=num%100;
k=j/10;
l=j%10;
sum=i+k+l;
printf("%d",sum);
getchar();
}
int num,i,j;
scanf("%d",&num);
i=num/10;
j=num%10; //将一个二位数个位与十位交换
num=10j+i;
printf("%d",num);
#include<math.h>
void main(){
double i=1.22,j=2.34,k=3.56;
double a,b,c,d;
a=i+j+k; //简单的运算
b=(i+j+k)/3;
c=pow(i,2)+pow(j,2)+pow(k,2);
d=sqrt(c);
printf("\n%f,\n%f,\n%f,\n%f",a,b,c,d);
getchar();
}
注意 pow就是平方 例如pow(2,2)就是2的平方
sqrt就是开方 例如sqrt(4)就是4的开方 答案为2
这两个的使用需要引用,开头用#include<math.h>引用
C语言中弧度与角度的转换
弧度转角度 (180/3.14)*弧度
角度转弧度 (3.14/180)*角度